数据结构课程设计实践报告Word文档下载推荐.docx

上传人:b****7 文档编号:21977051 上传时间:2023-02-02 格式:DOCX 页数:12 大小:72.41KB
下载 相关 举报
数据结构课程设计实践报告Word文档下载推荐.docx_第1页
第1页 / 共12页
数据结构课程设计实践报告Word文档下载推荐.docx_第2页
第2页 / 共12页
数据结构课程设计实践报告Word文档下载推荐.docx_第3页
第3页 / 共12页
数据结构课程设计实践报告Word文档下载推荐.docx_第4页
第4页 / 共12页
数据结构课程设计实践报告Word文档下载推荐.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

数据结构课程设计实践报告Word文档下载推荐.docx

《数据结构课程设计实践报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计实践报告Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。

数据结构课程设计实践报告Word文档下载推荐.docx

3.2.2创建翻牌函数6

3.2.3输出结果函数7

3.3主函数7

1需求分析

1.1课题设计目的

纸牌游戏是一种休闲娱乐方式,通过与《数据结构》课程的联系,设计一段完整的程序,开发一种新的游戏玩法,使学生在掌握数据结构的同时,懂得怎样去开发,去实际应用所学到的知识。

1.2课程设计任务:

编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;

然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;

然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;

...再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:

这时正面向上的牌有哪些?

2概要设计

2.1设计思路

编号为1的牌没有进行翻牌,所以仍然是正面向上,当从第二个编号开始的每张牌每次遇到是其倍数时,都会相应的翻一次,比如24,第一次它是2的倍数时要从正面翻到背面,当进行到3时,就又要从背面翻回来,而到4时还要在翻,以此类推,到6.8.12…它都要来回的翻。

如果它在多次的翻牌后,正面还向上了,那么它就是要输出的结果之一。

2.2设计流程

2.2.1主要步骤

1)定义单链表结点结构

2)创建与52张牌分别对应的含52个结点的链表;

3)调用翻牌算法按照其中判断规则创建翻牌函数;

4)输出在执行翻牌算法之后的结果,即通过for循环的嵌套,输出所有正面向上的牌,达到课程设计目的。

2.2.2流程图

3详细设计

3.1定义单链表结点

typedefstructnode

{

intdata;

//牌的编号

intcount;

//记录翻牌的次数

structnode*next;

//指向下一个结点的指针

}LinkList;

//该单链表为LinkList类型

3.2主要函数功能

3.2.1:

创建链表函数

创建带有头结点的单链表LinkList*creat(intk)//创建链表函数

一开始定义LinkList类型的三个指针变量:

LinkList*head,*p,*q;

然后定义并初始化记录结点个数的变量i:

inti=0;

定义完这些变量后,

继而首先申请头结点空间:

head=(LinkList*)malloc(sizeof(LinkList));

指针p指向头结点head:

p=head;

然后利用指针q再申请结点空间:

q=(LinkList*)malloc(sizeof(LinkList));

将结点链接成链表的具体操作如下:

while(i<

k)

{

q->

data=i+1;

//给每个结点的data赋值

count=0;

//给每个结点的count赋值

p->

next=q;

//q链接到p之后

p=q;

//将q作为新的p

q=q->

next;

//q指针后移

q=(LinkList*)malloc(sizeof(LinkList));

//申请结点空间

i++;

}

next=NULL;

//将最后一个结点的next域赋为空

return(head);

//返回头结点

3.2.2创建翻牌函数:

翻牌函数:

LinkList*overcard(LinkList*head,intk)

说明:

形参分别指的是头指针和结点个数。

定义一个LinkList类型指针p:

LinkList*p

因为翻牌时从第二张(也就是2)开始,可以使用for循环:

for(inti=2;

i<

=k;

i++)//从第二张牌开始

p=head->

//p指向首元素结点

while(p!

=NULL)

if((p->

data)%i==0)//若牌的编号能被基数i整除,则使p->

count++

count++;

p=p->

}//p指针后移

}

return(head);

3.2.3:

输出结果函数

输出正面朝上的牌的函数voidresult(LinkList*head)

定义一个LinkList类型指针q:

LinkList*q;

q=head->

//q指向首元素结点

printf("

正面向上的牌编号为:

"

);

while(q!

if((q->

count)%2==0)//若翻页的次数为偶数则正面朝上,输出

%4d"

q->

data);

q=q->

//q指针后移

\n"

3.3主函数:

voidmain()

charch;

//定义一个名字为ch变量为char类型

intk=52;

//共有52张牌

\n\n\t\t\t数据结构课程设计\n"

printf("

\n\t\t\t题目:

纸牌游戏\n"

\n\t\t\t专业:

计算机科学与技术\n"

printf("

\n\t\t\t班级:

计算机3111\n"

\n\t\t\t姓名:

卞玲玲\n"

\n\t\t\t学号:

**********"

\n******************************************************************************\n"

LinkList*head,*p;

执行此程序(Y),不执行此程序(N)\n"

scanf("

%c"

&

ch);

//格式控制符

while

(1)

if(ch=='

Y'

head=creat(k);

p=overcard(head,k);

result(p);

//输出正面向上的牌编号

elseif(ch=='

N'

退出程序!

break;

scanf("

//格式化输入函数

}

4调试与操作说明

进入主界面后,用户可以根据窗口提示得到想要的结果。

即输入Y则运行该程序,得到所有正面朝上的牌的编号,输入N则不运行该程序,退出运行窗口。

程序开始运行,进入界面,如下图所示。

如果用户想要执行程序,选择Y,进入下一界面,如下图所示。

如果用户不想要执行程序,选择N,进入界面,如下图所示。

总结

纸牌游戏是传统的中国智力游戏,它所要求的程序需要按一个完整的步骤去进行。

当然首先必须弄懂要开发的是什么样的纸牌游戏,它的目的是什么,在弄懂之后要构思用什么样的方法去解决问题,我通过在网上查找资料,并且问同学和老师我一些不懂的问题。

然后画出程序的流程图,并依照图来设计出解决问题的各种算法随后编程序。

最后将写好的程序进行调试和运行,直到满足题目的要求为止。

在这次课程设计中,我遇到了一系列的问题,能明显感觉到自己学习的知识还远远不够。

但是,为了完成这次程序设计并能很好的展示,我不断加深对数据结构要注意事项的理解,学习和掌握此门功课,掌握了面向对象程序设计方法。

在这个过程中也会在为了解决问题的时候发现新的问题,这样激发了自己主动学习的斗志,从而更好的理解所学到的知识点,用对地方。

通过这次课程设计的综合训练,不仅让我体会到了学习数据结构的重要性,而且培养了我们实际分析问题和动手编程的能力,从而更深层次的掌握了该门课程的主要内容。

感谢学校和老师给予我们这次机会,学无止境,我会继续努力,在学习的这条路上不断攀登,更多的去学会如何运用所学的知识,相信我会做的更好!

致谢

非常感谢学校为我们计算机专业的学生提供了为期两周的课程设计,让我们认识到计算机独有的魅力,也很感谢寇海州老师和龚乐君老师对我的细心指导,以及同学们对我的帮助和支持。

参考文献

[1]严蔚敏,吴伟民.数据结构(C语言版),清华大学出版社,2007

[2]王昆仑.数据结构与算法[M].北京:

中国铁道出版社,2007

[3]刘振鹏张晓莉郝杰.数据结构.北京:

中国铁道出版社.2005

[4]谭浩强.C语言程序设计题解与上机指导(第三版)[M].北京:

清华大学出版社

[5]潘新民,王燕芳.微型计算机控制技术[M],第2版.北京:

电子工业出版社,2003.4:

305-350

附录

源程序代码:

#include<

stdio.h>

//定义输入/输出函数

malloc.h>

//动态内存分配

typedefstructnode//定义单链表结点结构

LinkList*creat(intk)//创建链表函数

LinkList*head,*p,*q;

//定义LinkList类型的三个指针变量

inti=0;

//定义并初始化记录结点个数的变量

head=(LinkList*)malloc(sizeof(LinkList));

//申请头结点空间

p=head;

//指针p指向头结点

//申请结点空间

while(i<

q->

return(head);

LinkList*overcard(LinkList*head,intk)//翻牌函数

LinkList*p;

//定义一个LinkList类型指针p

for(inti=2;

p=head->

while(p!

{

if((p->

voidresult(LinkList*head)//输出结果函数

LinkList*q;

//定义一个LinkList类型指针q

q=head->

while(q!

if((q->

count)%2==0)//若翻过的次数为偶数则正面朝上,输出

//定义int类型

intk=52;

LinkList*head,*p;

while

(1)

if(ch=='

head=creat(k);

}

elseif(ch=='

printf("

break;

scanf("

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1