约瑟夫环课程设计实验报告.doc

约瑟夫环课程设计实验报告.doc

ID:55867482

大小:131.50 KB

页数:10页

时间:2020-03-14

约瑟夫环课程设计实验报告.doc_第1页
约瑟夫环课程设计实验报告.doc_第2页
约瑟夫环课程设计实验报告.doc_第3页
约瑟夫环课程设计实验报告.doc_第4页
约瑟夫环课程设计实验报告.doc_第5页
资源描述:

《约瑟夫环课程设计实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《数据结构》课程设计报告课程名称:《数据结构》课程设计课程设计题目:joseph环姓名:院系:计算机学院专业:年级:学号:指导教师:2011年12月18日目录1课程设计的目的………………………………………………………………22需求分析………………………………………………………………………23课程设计报告内容……………………………………………………………31、概要设计……………………………………………………………………32、详细设计……………………………………………………………………33、调试分析………………

2、……………………………………………………x4、用户手册……………………………………………………………………x5、测试结果……………………………………………………………………66、程序清单……………………………………………………………………74小结…………………………………………………………………………101、课程设计的目的(1)熟练使用C++编写程序,解决实际问题;(2)了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;(3)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法

3、和技能;(4)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;2、需求分析1、问题描述:编号是1,2,……,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向的下一个人开始重新从1报数,如此下去,直到所有人全部出列为止。设计一个程序来求出出列顺序。2、要求:利用不带表头结点的单向循环链表存储结构模拟此过程,按照出列的顺序输出各个人的编

4、号。3、测试数据:m的初值为20,n=7,7个人的密码依次为3,1,7,2,4,7,4,首先m=6,则正确的输出是什么?输出形式:建立一个输出函数,将正确的输出序列3、课程设计报告内容概要设计:在理解了题目后,我先想到的是我们所学的单链表,利用单链表先建立循环链表进行存贮,建立完循环链表后,我将所要编写的函数分为了两块,一块是经过学过的单链表改编的循环链表的基本操作函数,还有一块是运行约瑟夫环的函数。详细设计:我先建立一个结构体,与单链表一样,只是多了一个存密码的code域structLinkNode{in

5、tdata;//顺序intcode;//密码LinkNode*next;};建立一个类LinkList,包含的函数:LinkList();//构造函数voidCreat(constint);//创建循环链表intDelete(LinkNode*);//删除报到数的结点intJoseph(int);//约瑟夫环私有成员是LinkNode*head;//指向第一个结点的指针LinkNode*elem;//同上intlen;//长度我定义了一个elem指针是为了约瑟夫环里运行方便,elem只在约瑟夫环这个函数里用

6、到,其他函数没有特别大的用处。构造函数与书上的没什么大差别,创建循环链表时,要考虑几个问题,一个是题目要求是不带头结点,所以head指针直接指向了第一个结点,我在创建链表时把第一个结点初始化data为1,表明这个结点是第一个结点。具体如下:voidLinkList::Creat(constintnumber)//number为结点个数,也就是参与的人数{if(number==1)//只有一个人的情况{head=elem=newLinkNode;head->data=1;cout<<"请输入密码:"<

7、l;cin>>head->code;head->next=head;}else{head=elem=newLinkNode;head->data=1;cout<<"请依次输入各个密码:"<>head->code;LinkNode*q=head;q=head;for(inti=1;idata=i+1;cin>>p->code;q->next=p;q=p;}q->next=he

8、ad;//构成循环链表}len=number;}在构建约瑟夫环的执行函数时,我首先考虑了递归调用的函数,原本的这个程序的所有的都定为elemtype类型的,虽然编译没出错,但是在连接时发生了错误,在老师的指导下改成了具体的int型。intLinkList::Joseph(intm){if(len>1){LinkNode*q;if(m==1)//在初始报数为1的情况下{q=elem;inta=q->code;//将

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

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

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