纸牌游戏课程设计-数据结构.doc

上传人:PIYPING 文档编号:10529935 上传时间:2021-05-22 格式:DOC 页数:3 大小:59KB
返回 下载 相关 举报
纸牌游戏课程设计-数据结构.doc_第1页
第1页 / 共3页
纸牌游戏课程设计-数据结构.doc_第2页
第2页 / 共3页
纸牌游戏课程设计-数据结构.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《纸牌游戏课程设计-数据结构.doc》由会员分享,可在线阅读,更多相关《纸牌游戏课程设计-数据结构.doc(3页珍藏版)》请在三一文库上搜索。

1、纸牌游戏一需求设计:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后从第4张开始,以4为基数,是4的倍数的牌翻一次, 直到最后一张牌;.再依次5的倍数的牌翻一次,6的,7的 直到 以52为基数的 翻过,输出:这时正面向上的牌有哪些?二概要设计:存储结构:采用了链表的存储方式,属于链接存储结构。以下是用于存储结点的结构体的定义:struct node /定义结点int data;int key;/*标志位*/struct node *next;基本算法:这个算法的主要流程为:建

2、立代表52张牌的链表输出这52张牌调用翻牌算法按照规则就行翻牌输出翻牌算法之后的结果。最为主要的是翻牌算法的实现:void fanpai(struct node *p)/翻牌算法struct node *p1,*p2;for(p1=p-next;p1!=NULL;p1=p1-next) for(p2=p1;p2!=NULL;p2=p2-next) if(p2-data%p1-data=0) /是当前基数的倍数则翻牌 if(p2-key=0) p2-key=1;else p2-key=0; 是通过两个for循环的嵌套,对是当前基数倍数的牌,即满足if(p2-data%p1-data=0)的牌进行

3、翻牌。三详细设计:源程序:#include #include#includestruct node /定义结点int data;int key;/*标志位*/struct node *next;struct node *creat() /定义链表建立函数creat()struct node *p,*head,*s; /其返回值为结构指针int i;head=NULL; /初始化p=(struct node*)malloc(sizeof(*p);if(p=NULL)printf(Memory is too small!n);head=p;head-key=1;head-data=1;head-n

4、ext=NULL;for(i=2;idata=i; s-key=1;p-next=s;p=s; p-next=NULL;return(head);void fanpai(struct node *p)/翻牌算法struct node *p1,*p2;for(p1=p-next;p1!=NULL;p1=p1-next) for(p2=p1;p2!=NULL;p2=p2-next) if(p2-data%p1-data=0) /是当前基数的倍数则翻牌 if(p2-key=0) p2-key=1;else p2-key=0; void main()struct node *head,*np;head

5、=creat();printf(显示全部纸牌编号:n);if(head=NULL)printf(Creat link error!n);elsefor(np=head;np!=NULL;np=np-next)/输出翻牌之前所有的牌printf(%4d,np-data);fanpai(head);/调用翻牌算法,开始翻牌printf(n最后正面向上的纸牌编号为:n);for(np=head;np!=NULL;np=np-next)/输出翻牌完成后的结果 if(np-key=1) printf(%4d,np-data); printf(n);四调试分析:测试数据和结果:调试得到输出结果如图:算法时间复杂度:O(n2)对相关问题的思考:这个算法主要考察了对数据存储方式的处理和对数学计算算法的处理。我在这里用了链表的存储方式,采用取模的方式解决其中的判断问题。

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1