数据结构课程设计二

数据结构课程设计二

ID:34224141

大小:89.00 KB

页数:6页

时间:2019-03-04

数据结构课程设计二_第1页
数据结构课程设计二_第2页
数据结构课程设计二_第3页
数据结构课程设计二_第4页
数据结构课程设计二_第5页
资源描述:

《数据结构课程设计二》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、数据结构课程设计二班级:06计本(1)姓名:魏建平学号:20060724035题目:严慰敏习题实习一的第二题,约瑟夫环问题:约瑟夫问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个整数作为报数上限值m,从第一个人开始顺时针自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有的人全部出列为止。试设计一个程序,求出出列顺序。一、需求分析1、利用单向循环链表存储结构

2、模拟此过程,按照出列的顺序一次打印出每个人的编号。2、程序运行后,首先要求用户指定初始报数上限值,然后读取各人的密码。可设n≤30.此题所用的循环链表中不需要“头结点”,应注意空表和非空表的界限。3、程序执行的命令:提示用户选择相应操作以及输入相应的人数、每个人的密码和m值。4、测试数据:m的初值为20;n=7,7个人的密码依次是:3,1,7,2,4,8,4,出列的顺序为6,1,4,7,2,3,5。二、概要设计1、单向循环表的抽象数据类型定义typedefstructCLNode{ElemTypedat

3、a;ElemTypei;structCLNode*next;}CLNode,*CLinkList;2、Voidmain(){do{接受命令(提示用户选择功能);接受命令(提示用户输入参数);输入结果;}while(“命令”=”退出”)}3、本程序只有两个模块,调用简单:一、详细设计1、循环链表结构:typedefstructCLNode{ElemTypedata;ElemTypei;structCLNode*next;}CLNode,*CLinkLis2、初始化循环链表函数:voidinit_CLink

4、List(CLinkList*l){(*l)=(CLinkList)malloc(sizeof(structCLNode));(*l)->data=-1;(*l)->i=0;(*l)->next=(*l);}3、清空循环链表函数:voidclear_CLinkList(CLinkListl){CLNode*p,*useless;p=l->next;l->next=l;while(p!=l){useless=p;p=p->next;free(useless);}}4、创建约瑟夫环表函数:voidcrt_C

5、LinkList(CLinkListl){intnum,n;intj;CLNode*p,*r;clear_CLinkList(l);r=l;j=1;printf("输入游戏人数:");scanf("%d",&n);while(j<=n){printf("请输入第%d个人的密码:",j);scanf("%d",&num);p=(CLNode*)malloc(sizeof(structCLNode));p->data=num;p->i=j;r->next=p;r=p;j++;}r->next=l;}5、

6、显示表中元素函数:voiddisp_CLinkList(CLinkListl){introw=1;CLNode*p;p=l->next;printf("");while(p!=l){if(row==7){row=1;printf("");}printf("%5d:%-5d

7、",p->i,p->data);row++;p=p->next;}}6、销毁循环链表函数:voidrelease_CLinkList(CLinkListl)/{clear_CLinkList(l);free(l);}7、元素出

8、圈函数:voidgame(CLinkListl){intm,k=0;CLNode*p,*pre,*u;p=l;printf("输入m:");scanf("%d",&m);printf("%40s","游戏开始");while(p->next!=p){pre=p;p=p->next;if(p==l){pre=p;p=p->next;}k++;if(k==m){printf("%d",p->i);m=p->data;pre->next=p->next;u=p;free(u);p=pre;k=

9、0;}}printf("%40s","游戏结束");}voidexitgame(){printf("%40s","再见!!");}8、主函数:voidmain(){intselect;CLinkListlist;init_CLinkList(&list);do{printf("%s%15s%15s%15s%15s","","1:创建","2:显示","3:游戏","4:退出");printf("

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。