数据结构课程设计,求大神,只做其中一题

题目14、猴子选大王任务:一堆猴子都有编号,编号是1,2,3...m,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下...  题目
14、 猴子选大王  任务:一堆猴子都有编号,编号是1,2,3 ...m ,这群猴子(m个)按照1-m的顺序围坐一圈,从第1开始数,每数到第N个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。  要求:  输入数据:输入m,n m,n 为整数,n<m  输出形式:中文提示按照m个猴子,数n 个数的方法,输出为大王的猴子是几号,建立一个函数来实现此功能   15、二叉树遍历问题  任务:  要求能够输入树的各个结点,并能够输出用不同方法遍历的遍历序列(先序、中序、后序、按层次遍历);实现求二叉树的深度、求二叉树的根、求二叉树的结点数等基本算法。16、单源最短路径问题要求对给定带权有向图,求从给定源点到所有其他各顶点的最短路径长度。17、舞伴问题假定在一舞会上,男士排成一队,女士排成一队。跳舞开始时,依次从男队和女队的队头各出一人配成舞伴。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。设计要求:模拟上述舞伴系统,并能计算对于任何男士A和女士B在哪一轮舞曲中的k次跳舞?

要求

1.上交可运行的源程序:学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中);
2.上交课程设计报告打印文稿(打印文稿中应包含封皮,如附件)
课程设计报告按照课程设计的具体要求建立的功能模块,至少包含以下模块,要求如下。
a)需求分析:
在该部分中叙述,程序总体功能要求,若分为多个模块,详细阐述。每个模块的功能要求
b)概要设计
在此给出程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义),说明每个部分的算法设计说明(可以是描述算法的流程图)。
c)详细设计
各个算法实现的源程序,对每个题目要有相应的源程序(可以是一组源程序,每个功能模块采用不同的函数实现)
源程序要按照写程序的规则来编写。要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。
d)调试分析
测试数据,测试输出的结果(要求直接打印屏幕输入输出结果),结果分析。时间复杂度分析,每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),算法的改进设想。
e)课设总结:总结可以包括 : 课程设计 过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对数据结构这门课程的思考、在课程设计过程中对《数据结构》课程的认识等内容。
展开
 我来答
wskfhvhc
2012-12-28 · TA获得超过692个赞
知道小有建树答主
回答量:307
采纳率:66%
帮助的人:304万
展开全部
//先来贴一个二叉树的,等下再贴猴子选大王(这是一个递归算法,挺好玩的)
class BinaryTree
{
class Node
{
private int data; //保存数据内容
private Node left; //左子树
private Node right;//右子树
public Node(int data){
this.data = data;
}
public void addNode(Node newNode){ //addNode方法用来添加数据
if(newNode.data <= this.data){
if(this.left == null){ //左子树为空
this.left = newNode;
}else{
this.left.addNode(newNode);//继续向下判断
}
}
if(newNode.data > this.data){
if(this.right == null){ //右子树为空
this.right = newNode;
}else{
this.right.addNode(newNode);//继续向下判断
}
}
} //addNode方法结束
public void printNode(){ //采用中序遍历(左-根-右)
if(this.left != null){
this.left.printNode();
}
System.out.println(this.data); //找到根内容
if(this.right != null){
this.right.printNode();
}
}
} //Node类结束
private Node root; //根节点
public void add(int data){
Node newNode = new Node(data);
if(this.root == null){
this.root = newNode;
}else{
this.root.addNode(newNode);
}
}
public void print(){
this.root.printNode();
}
}
public class Demo
{
public static void main(String args[]){
BinaryTree bt = new BinaryTree();
bt.add(3);
bt.add(4);
bt.add(0);
bt.add(1);
bt.print();
}
}
//再来贴一个猴子选大王的代码:
import java.util.*;
class M{
private int monkey;
private int kill;
private List<Integer> list;
public M(int monkey,int kill){
this.list = new ArrayList<Integer>() ;
this.monkey = monkey ;
this.kill = kill ;
for(int i=1;i<=this.monkey;i++){
list.add(i);//把猴子装进list
}
killMonkey(list,kill);
}
public void killMonkey(List<Integer> list,int kill){//通过递归调用,将猴子删除
for(int i=0;i<kill-1;i++){
int temp=list.get(0);//将第一个位置的猴子取出来
list.remove(0);//将这个位置删除
list.add(temp);//将这个猴子放到队尾
}//用循环将前面的猴子排到队尾
list.remove(0);//去掉这个猴子
if(list.size()>1){
killMonkey(list,kill);
}else{
System.out.print("猴子王为:"+list.get(0));
}
}
}
public class Demo{
public static void main(String[] args)throws InputMismatchException {
Scanner in = new Scanner(System.in);
int monkey=0;
int kill=0;
System.out.print("请输入猴子的总数M:");
if(in.hasNext()){
try{
monkey = in.nextInt();
System.out.print("请输入间隔数N:");
kill = in.nextInt();
}catch(InputMismatchException e){
System.out.println("必须输入数字");
System.exit(0);//退出程序
}
}
if( monkey != 0 && kill != 0 && monkey>kill){
M m=new M(monkey,kill);
}else if( monkey==0 || kill ==0 || monkey == kill){
System.out.println("输入不能为零,M不能等于N值");
}else{
System.out.println("M值必须大于N值!");
}
}
}
追问
不能运行啊
追答

我全是测试过,才发上来, 以上是两个程序哦,一个二叉树,一个猴子称王

上海华然企业咨询
2024-10-28 广告
作为上海华然企业咨询有限公司的一员,我们深知大模型测试对于企业数字化转型与智能决策的重要性。在应对此类测试时,我们注重数据的精准性、算法的先进性及模型的适用性,确保大模型能够精准捕捉市场动态,高效分析企业数据,为管理层提供科学、前瞻的决策支... 点击进入详情页
本回答由上海华然企业咨询提供
骨Zi里德傲气
2012-12-28
知道答主
回答量:25
采纳率:0%
帮助的人:4万
展开全部
分给我吧,这没人会
追问
留QQ,我把完整的问题发给你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式