约瑟夫环实验报告(3种方法实现)

约瑟夫环实验报告(3种方法实现)

ID:44109393

大小:58.50 KB

页数:7页

时间:2019-10-18

约瑟夫环实验报告(3种方法实现)_第1页
约瑟夫环实验报告(3种方法实现)_第2页
约瑟夫环实验报告(3种方法实现)_第3页
约瑟夫环实验报告(3种方法实现)_第4页
约瑟夫环实验报告(3种方法实现)_第5页
资源描述:

《约瑟夫环实验报告(3种方法实现)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、约瑟夫环的三种实现方法的实验报告公选题:约瑟夫环(使用一维数组、一维结构体数组、循环链表三种方法完成)一,实验目的1、学会通过对问题的分析,设计一种合理的数据结构,并进行定义及操作的实现。2、掌握利用一维数组,结构体,还有循环链表的各种操作來进行具体的实际应用。3、加强程序设计的能力。二,实验内容什么是约瑟夫环?约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3.」分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。举例如下;n=9,k=1,m=

2、5【解答】出局人的顺序为5,1,7,4,3,6,9,2,8。三,怎么用程序来实现这个实际场景?要实现这个场景有多种语言(C,C++,JAVA语言,C#),每--种语言在实现的过程中各有不同,在实现上复杂程度也不同。针对自己目前的水平以及查阅相关资料,做了如下的一些解决方案。四,三种解决方法()1,使用一维数组:#include#defineN10〃总人数#defineM5//间隔数voidmain(){inta[Nl;intcount=0;inti=0;while(i<10)intx;printfC请输入第%<1个元素的值:”,i+l);scan

3、f(”%d",&x);a[i]=x;i++;}printf("所有元素信息如下:”);for(intj=O;jN-l)i=0;}printf(H%dM,i?a[i-l]:a[N-lJ);a[(i?(i・l):(N・l))]=O;〃哪一个出列了哪一个值就标记为0}printf(Hn);}1,使用一维结构体数组:#include

4、#defineN100structshuzuintnum;};structshuzua[N];voidInput(intn){intx;for(inti=0;in-Dj=0;}printf("%dl].num:a[

5、n-1].num);a[G?(j-l):(n-l))].num=O;//哪一个出列了哪一个值就标记为0voidmain()intn;〃请输入总个数intm;//间隔数printfC*请输入总个数n:H);scanf(”%d”,&n);Input(n);printff请输入间隔数m:”);scanf(H%d",&m);yuesefu(n,m);}1,使用循环链表:#include#includetypedefstructnode{intnum;structnode*next;}NODE;〃创建一个没有头结点的链表NODE*creat

6、elinklist(intn){system("color5");NODE*head,*p,*q;inti=l;intx;head=p=(structnode*)malloc(sizeof(structnode));printf(n请输入第1个元素的值「);scanf(H%d",&x);p->num=x;//没有头结点的链表for(i=2;i<=n;i++){inty;q=(structnode:}:)inalloc(sizeof(structnode));if(q==O)return(O);p->next=q;p=q;printf(n请输入第%(1个元素的值:n,i

7、);scanf(”%d”,&y);p->num=y;}p->next=head;//使链表尾指向链表头形成循环链表returnhead;}〃输出这个链表voidprintlinklist(NODE*p,intn){system("color1f1);inti;NODE*q=p;if(NULL==q->next){printf(“链表为空!”);return;}printf(”所有元素的信息列表:”);for(i=l;i<=n;i++)if(NULL=q)printf(HthelistisNULL!11);return;}printf("%dn,p

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

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

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