数据结构课程设计Word格式.docx
- 文档编号:20879449
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:12
- 大小:70.94KB
数据结构课程设计Word格式.docx
《数据结构课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
(3)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;
(4)训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风;
2、课程设计的要求
(1)设计的课题能够体现数据结构和算法的算法分析、设计、算法实现。
(2)根据自己对数据结构和算法的基本概念、原理和机制的理解,自拟题目和设计内容,选题尽可能结合实际的应用。
3、课程设计的方案
纸牌游戏具体内容如下:
编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;
然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;
然后,从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;
再依次5的倍数的牌翻一次,6的,7的直到以52为基数的牌翻过,输出,这时正面向上的牌有哪些?
运行程序,进入用户选择界面,用户选择1输出52张牌编号和最后正面向上牌的编号;
用户选择2输出要求输入牌数,用户输入牌数后,输出所有牌的编号和最后正面向牌的编号;
用户选择0退出执行程序;
用户输入其他信息时,输出错误信息提示并要求用户重新选择操作。
4、课程设计的内容
4.1设计的内容
因为要有编号为1-52张纸牌,则需要先创建链表,运用mallac函数申请内存空间,存储纸牌编号信息;
然后设计翻牌程序,利用j%i==0的思想,使用指针存储最后正面向上的牌编号;
最后编写主函数,判断链表建立是否成功,输出全部纸牌编号与程序运行结果,让用户能够直接的看到求解结果。
4.2算法思路
4.2.1算法的内容
(1)定义node节点,用于存储单张牌的信息。
structnode//定义结点
{
intdata;
intkey;
/*标志位*/
structnode*next;
}
(2)创建链表建立creat()函数,用于建立和存储所有纸牌编号,运用malloc函数申请内存空间时若申请失败,输出相应提示信息。
structnode*creat()//定义链表建立函数creat()
structnode*p,*head,*s;
//其返回值为结构指针
inti;
head=NULL;
//初始化
p=(structnode*)malloc(sizeof(*p));
if(p==NULL)
{
printf("
Memoryistoosmall!
\n"
);
}
head=p;
head->
key=1;
data=1;
next=NULL;
for(i=2;
i<
=n;
i++)//建立n个结点的链表
{
s=(structnode*)malloc(sizeof(*p));
s->
data=i;
s->
p->
next=s;
p=s;
//p=s->
next;
}
return(head);
(3)建立fanpai()函数,利用j%i==0的思想,使用指针存储最后正面向上的牌编号。
voidfanpai(structnode*p)
structnode*p1,*p2;
for(p1=p->
p1!
=NULL;
p1=p1->
next)
{
for(p2=p1;
p2!
p2=p2->
if(p2->
data%p1->
data==0)
key==0)
p2->
elsep2->
key=0;
}
(4)建立obj()函数,用于创建有n张纸牌信息的链表并输出最后正面向上的纸牌编号。
voidobj()
{structnode*head,*np;
head=creat();
printf("
显示全部纸牌编号:
"
if(head==NULL)
printf("
Creatlinkerror!
else
for(np=head;
np!
np=np->
next)
%4d"
np->
data);
fanpai(head);
\n最后正面向上的纸牌编号为:
for(np=head;
if(np->
key==1)
(5)最后编写main()主函数,输出用户选择界面,并对错误输入输出提示信息,完成总的设计任务。
voidmain()
{charch;
cout<
<
\n\t\t\t纸牌游戏"
endl;
\t\t----------------------------------"
\t\t1标准52张牌2任意输入牌数0退出"
endl<
\t\t\t选择操作(0~2):
"
;
cin>
>
ch;
switch(ch)
case'
1'
:
obj();
main();
break;
case'
2'
cout<
请输入牌数:
cin>
n;
obj();
main();
break;
0'
确定退出(y/n)?
if(ch=='
y'
||ch=='
Y'
)
exit(0);
default:
a:
输入错误,是否继续操作(y/n)?
main();
if(ch=='
n'
N'
exit(0);
gotoa;
}}
4.2.2算法中函数的流程图
翻牌函数:
next
data==0
key==0
p2->
key=1p2->
key=0
函数的调用关系图:
4.3程序调试与测试以及结果的分析
4.3.1程序调试
在结点定义中没有定义data导致错误,修改后运行正常。
4.3.2程序测试
(1)用户输入1,输出52张纸牌编号和最后正面向上的纸牌编号:
(2)用户输入2,提示用户输入纸牌数目,输出任意个数纸牌的编号和最后正面向上的纸牌编号:
(3)用户输入0,提示用户是否确定退出,用户输入y后,退出程序执行:
(4)用户输入错误字符时,提示输入错误:
4.3.3结果分析
本程序最后采用比较简单算法实现,时间复杂度仅为O(n)。
4.4源程序代码
/*纸牌游戏源程序*/
#include<
stdio.h>
iostream.h>
#include<
malloc.h>
stdlib.h>
};
intn=52;
i++)//建立52个结点的链表
break;
5、总结
通过这次数据结构课程设计,我受益匪浅。
对链表这种数据结构有了更深刻的认识,对《数据结构》这门课有了更浓厚的兴趣。
并且在以后得学习当中会更注重课本内容的学习,只有掌握基础才可以有所突破和进步,同时很多问题也是一些很基础的知识所叠加累计,所以真正把基础学得炉火纯青,相信面对任何问题,我都不会再害怕!
参考文献
[1]数据结构(C语言版),严蔚敏、吴伟民编著,清华大学出版社
[2]C语言程序设计(第二版),谭浩强、张温基等编著,高等教育出版社
[3]C++面向对象程序设计,谭浩强编著,清华出版社,中国铁道出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计