敢死队问题.docx
- 文档编号:6900646
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:7
- 大小:102.58KB
敢死队问题.docx
《敢死队问题.docx》由会员分享,可在线阅读,更多相关《敢死队问题.docx(7页珍藏版)》请在冰豆网上搜索。
敢死队问题
数据结构
课程设计报告
设计题目:
敢死队问题
专 业 网络工程
学 生1
学 生2
指导教师 路莹
起止时间2011/6/20—2011/6/24
《数据结构》课程设计报告目录
一:
需求分析
二:
概要设计
三:
详细设计
四:
调试分析
五:
运行结果
六:
心得体会
七:
参考文献
一、需求分析:
分析题目要完成的功能,叙述每个模块的功能要求。
程序执行命令包括;
(1)构造数据结构
(2)输入数据
(3)执行的战士出列
(4)输入要求数值
(5)结束
二、概要设计
说明每个功能部分的算法设计(可以使用文字描述,也可以用算法流程图)、系统使用的软件环境。
算法实现:
1,定义类型
2,定义变量并初始化
3,线性表初始化
文字描述:
声明数据类型
定义变量并初始化
输入敢死队总数(20)
创建循环链表,并且输出初始化链表
输入从那个战士开始
输出需要完成任务的战士并且删掉该节点
当出列的战士为10个则退出该循环
输出剩下来的战士
软件环境 Vc,6.0
三、详细设计
程序使用的存储结构设计说明(包括主要数据类型、变量、函数介绍)、各个算法实现的源程序(主要功能代码,标注清晰的程序注释)。
#include
#include
#include
structnode //创建结构体节点
{
intdata;
structnode*next;
};
structnode*create(inta) //为带结构体指针的函数
{
structnode*p,*q,*t;
inti;
q=p=(structnode*)malloc(sizeof(structnode)); //在内存中开辟一段空间
p->data=1;
for(i=2;i<=a;i++)
{
t=(structnode*)malloc(sizeof(structnode));
p->next=t;
p->next->data=i; //令第i个的内容为i
p=p->next;
}
p->next=q; //使成为一个数据环
for(i=1;i<=a;i++) //输出整个结构体链表
{
printf("%d\t",p->next->data);
p=p->next;
}
returnq;
}
select(structnode*p,intb,inta)
{
structnode*q;
intcounter;
intn,i,m=2;
printf("这些是输出的是要去完成任务的战士:
\n");
while
(1) //这个循环是为了找到从第几个战士开始
{
if(m==b)
{
printf("%d\t",p->next->data);
break;
}
else
{
p=p->next;
m++;
}
}
p->next=p->next->next; //删除该节点
counter=1;
while
(1) //这个循环是找出剩余的九名去完成任务的战士
{
if(counter==10)
{break;}
n=0;
while
(1)
{
if(n==4)
{
printf("%d\t",p->next->data);
p->next=p->next->next;
break;
}
p=p->next;
n++;
}
counter++;
}
printf("这些是输出的是要去完成剩下任务的战士:
\n");
for(i=1;i<=a-10;i++)
{
printf("%d\t",p->data);
p=p->next;
}
}
voidmain()
{
inti=0,a,b;
structnode*p;
printf("\t\t这是一个求敢死队问题的程序:
\n");
printf("这个程序要求从总共M人中选出来的10个战士,和剩下的战士,挑选方法是从所有的战士中任选一个然后按顺序每隔4个选一个战士。
\n");
printf("请输入所有战士的人数:
");
scanf("%d",&a);
p=create(a);
while
(1)
{
printf("\n请输入从第几个战士开始:
1~M:
\n");
scanf("%d",&b);
if(b>a)
{printf("请重新输入:
");}
else{break;}
}
select(p,b,a); //传值,传入的p是整个数据链的头结点,b,是从第几个战士开始
printf("\n此程序已结束了!
谢谢使用!
\n");
}
四、调试分析
选用合法和非法测试数据,测试系统运行结。
思考系统存在的问题、解决思路。
五、运行结果
六、总结:
包括:
课程设计过程中的收获,遇到问题、解决问题的过程,算法的改进设想,对《数据结构》这门课程的认识等内容。
这次的课程设计让我学会了很多东西。
同时加深了我对数据结构这门课的理解,学会了如何在实际应用中数据结构编程。
我是用线性表来做的,首先我完成了结构体的初始化和创建链表。
链表的所有人数为M,然后输入从那个战士开始出列,建立一个循环当出列的战士为10时结束循环。
出列的要求是每隔4个人出列一个战士。
输出需要完成任务的战士和剩下的战士。
通过这次的编程体会,让我对编程有了一定的认识,第一:
也是最重要的一点,就是要不懂就要问,就要看书,知识不是与生俱来的,在此次课程设计中我有很多不懂,通过问同学,查资料,一点点掌握,最后完成了此次课程设计;第二:
要有耐心,变成容不得一丁点的错误,一个数百行的程序往往因为一个小错误而无法运行,这是我们就需要耐心地细心地排除错误。
我在编的时候就常常因为一两个错误,老是无法运行,心里一急,脑子一乱,别说改对了,错误一次比一次多,最后想办法让自己冷静下来,慢慢排除错误;第三:
对知识的掌握和运用,俗话说:
“磨刀不误砍柴工”,在编的时候,先要把知识掌握好,什么不懂先搞懂,这样在编程的时候才能得心应手。
这是我和我的同伴的一点感想。
七、参考文献:
谭浩强的《c语言程序设计》
大二的《数据结构》课本
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 敢死队 问题