ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:59.88KB ,
资源ID:5899027      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5899027.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《数据结构》课程设计报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《数据结构》课程设计报告.docx

1、数据结构课程设计报告陕西科技大学电信学院数据结构课程设计报告名 称: C版扎金花 班 级: 姓 名: 学 号: 指导教师: 学年学期: 2011 2012 学年 第 一 学期 2011 年 12 月 29 日摘 要课程设计的题目是扎金花,扎金花是中国广泛流传的一种民间游戏,是一种既比胆略又比智慧的游戏,现实中不同心理因素之间的较量成为了该游戏的一大特色。这次C语言版的扎金花运用了数据结构中的线性链表、数组等算法思想,实现了用扑克牌休闲娱乐的方式。该程序模拟人的发牌过程,把牌发给三个玩家,同时依照规则比较出其大小,规则是:单对顺花同花顺豹子;同一类型则按大小比较 12next=NULL; for

2、(i=0;idata=data; s-color=col; s-next=p1-next;p1-next=s;s=p1; /生成新的结点,把新生成的元素存入到其中,同时把该结点链入到链表中 delete_(m,j,k);k-; return p;3.我所承担的发牌设计的函数实现过程 我和赵某某共同担任了这次设计中的发牌过程。我不会玩扎金花,不过,这并不会影响什么。 发牌设计: 1)每次游戏,必定是一副牌,去掉大小王,一共是52张牌。每张牌有两个必要元素,花色和数据。其中花色是四种:pade-黑桃 Club 梅花Diamond-方块Heart-红桃。数据分为十三种,并且2为最小,A为最大。从大到

3、小依次为:K、Q、J、10、9、8、7、6、5、4、3、2。为了表示方便,用数字代替处理并在需要时进行还原,其规则是这样的A-1,J-11,Q-12,K-13,其他的数字对应其本身。由于牌的两要素都不可少,所以我们决定采用结构体进行,其具体程序如下:(记为函数一)typedef struct pokery int data; int color; struct pokery *next; pokery,*poker; 2) 在发牌过程中,为了保证正游戏的公平性,必须要引用随机数 random,并且放入数组,其中,随机种子为当前时间,在头函数中表示为#include 。具体程序如下:(记为函数二

4、)void random(int results) int candilength; int i, n =length, r; srand(unsigned)time(0); for(i=0; ilength; +i) candii = i; for (i=0; inext=NULL; for(i=0;idata=data; s-color=col; s-next=p1-next;p1-next=s;s=p1; /生成新的结点,把新生成的元素存入到其中,同时把该结点链入到链表中 delete_(m,j,k);k-; /删除 return p; 4) 由于同一副牌中不可能有相同的出现,那么每派出

5、一张牌,数组里就会必须少这个元素,及删除该数,将数组放入单链表中,则链表的长度减少。具体程序如下:(记为函数四)void delete_(int a,int x,int n) /n为数组长度,x为元素下标 int j; for(j=x;jnext; while(pt) printf(%c ,pt-color); switch(pt-data) /A-14,J-11,Q-12,K-13,其他的数字对其本身 case 1 : printf(%c ,A);break; case 11: printf(%c ,J);break; case 12: printf(%c ,Q);break; case 1

6、3: printf(%c ,K);break; default: printf(%d ,pt-data); count+; if(count=3) printf(n); pt=pt-next; 至此,我们的子函数部分已经完成,并且多次程序检验是可操作的。 4 调试分析我们最初选择的是分4次进行,每一次在13个数中进行,可是后来发现第二次以后的过程可能选到与前面完全的元素。而且取到的元素会进入链表,这样后面的发牌过程就会出现完全相同的牌,从而酿成错误。因此想到假如每次取出该元素后,可以删除该元素,第二次以后就不会再选到。但是由于是13个元素分4次进行,想要达到这种效果会很困难。于是又想到有52张

7、牌,可以考虑随机选择1-52的随机数,是全部选出,但是由于随机过程中第二次以后的随机还是可能取到,就运用了两个数组,其中一个为空数组,另外一个数组存着1-52的数,随机取下标然后存入,同时把满数字的数组中取到的数字删去。循环完成随机取数的过程,最后把随机取到的数存到单链表中去。 其实这样的一个个程序看起来似乎把简单的问题复杂化了,或许我们可以假象为已经有了那么特定的五十二张牌,而发牌就是随机抓取,为此我试写一下函数:产生一副牌void makecard()int i;for(i=0;i52;i+)pokeri.color=3+i/13;pokeri.number=i%13+1;pokeri.u

8、se=0;抓取牌,从以上定义产生的一副牌中int getcard()int i,k=0; while(k=0)i=rand();i=i%52; if(pokeri.use=0)pokeri.use=1;k=1;return i;检验的这段程序是可以用的,不过我们和其他部分的已经商量好了写为数组和链表形式,我们随意代替一定会导致三个部分难以连接,因此最后决定用原计划较复杂的程序。5 测试结果说明输入的数据,看到的结果。(结果用截图展示!)6 课设总结 这是我第一次相信自己,因为在学C语言时,李老师说学完C语言就可以变出类似扫雷的小游戏,我一直很怀疑,觉得无从下手。可是,现在,扎金花游戏真在我的手

9、底下诞生,尽管我不能完成所有,但是却大大的树立了我的信心,让我觉得每天看着一堆字母并不是那么无聊,我们也可以乐在其中。 这次的程序设计是以小组的形式完成的,大家都很认真,分工明确,但也不能完全独立,否则编出的程序会无法连接,其实这并不只是一场知识的考验,更是一种团结的考验。每个人的能力都是不一样的,性格也不是一样的,这样的层次不齐突然聚在一起完成一个任务,需要的不仅仅是每个人贡献出自己的才智,还有互相帮助,互相尊重的品德。一个再有能力的人也永远比不上一队结的人。在此,我不得不谢谢赵伟娟和王世信在这次设计中给予的帮助和指导。 也是通过这次课程设计,我知道了自己与他人的差距,不得不否认,我学得还不

10、够好,思维还不够严谨,但是,我会在将来的学习中好好的磨练自己,我想人与人之间的差距比不过不是永恒的,但是想要缩小它,必须付出比平时更多的时间和精力。其实课程设计并不只是教会我们一些编程吧,我们需要学习的是一种思维,一种简化问题的方法,课程设计正是在教我们如何通过机器语言表达我们的思想,只有这样,我们才能解决尽在眼前的问题。7 参考文献1 严蔚敏 数据结构(C语言版) 北京:清华大学出版社 197.4.12 谭浩强 C语言程序设计(第四版)北京:清华大学出版社 2010年6月第四版3 Nicholas A.Scolter ,Scott J.Kleper C+高级编程 机械工业出版社 2006年1月第一版中文印刷4 杨晓光 数据结构实例教程 北京:清华大学出版社 北京交通大学出版社 2008年12月5陈锐等 零基础学数据结构 北京:机械工业出版社 2010年1月

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

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