约涩夫问题多种解法

约涩夫问题多种解法

ID:15536045

大小:50.50 KB

页数:21页

时间:2018-08-03

约涩夫问题多种解法_第1页
约涩夫问题多种解法_第2页
约涩夫问题多种解法_第3页
约涩夫问题多种解法_第4页
约涩夫问题多种解法_第5页
资源描述:

《约涩夫问题多种解法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、约涩夫问题多种解法#includeusingnamespacestd;typedefstructNode{intdata;structNode*next;}Lnode,*LinkList;LinkListCreat(intnum){LinkListL;Lnode*s,*r,*head;inti=1;L=r=NULL;while(1){s=newLnode;s->data=i;i++;if(L==NULL){L=s;head=L;}elser->next=s;r=s;if(i==num+1)br

2、eak;}r->next=head;returnL;}intout(LinkListL,intnum,intstep){Lnode*p,*s,*n;p=L;for(inti=1;i<=num;i++){intcount=1;//用count定位到第m个人,循环后,p1指向这个人,p2指向这个人的上一个人while(count++<=step){s=p;p=p->next;}cout<data<<"";//输出当前人的编号n=p;//p指向当前这个人s->next=p->next;//把当前的人前的人和当前

3、的人后的人连上.p=p->next;//下次从当前的人的下一个人开始数deleten;//把这个人删除(就是释放这块内存)}/*inti=0;while(1){for(intj=0;jnext;s=p;p=p->next;s=p->next;cout<data<<"";i++;if(i==num)break;}*/return0;}voidget(LinkListL,intstep){Lnode*p,*s;p=L;p=p->next;p=s;p=p->next;s->next

4、=p->next;cout<data;deletep;}intmain(){LinkListL;intnum,step;cin>>num>>step;L=Creat(num);out(L,num,step);//get(L,step);return0;}代码2:(很好)#include#includestructstu{intnum;structstu*next;};intm,n;structstu*p,*q,*s;structstu*create(){structs

5、tu*head,*s1,*r;inti;head=NULL;for(i=1;i<=n;i++){s1=(structstu*)malloc(sizeof(structstu));s1->num=i;if(head==NULL)head=s1;elser->next=s1;r=s1;}if(r)r->next=head;returnhead;}structstu*get_index(structstu*head,intk){intj=1;if(k<1){printf("输入错误");returnNULL;}s=

6、head;while(s&&jnext;j++;}returns;}voidf1(structstu*head,structstu*h){intx,i;x=m/2;p=h;i=1;printf("依次出列的人的编号为:");while(p->next!=p){q=p->next;for(i=1;inext;q=p->next;}p->next=q->next;printf("%d",q->num);free(q);p=p->next;}printf("最后剩下的人的编号

7、为%d",p->num);}voidf2(structstu*head,structstu*h){inti,x;x=m/2;i=1;p=h;printf("依次出列的人的编号为:");do{for(i=1;i<=x;i++){q=p->next;p=q->next;}q->next=p->next;printf("%d",p->num);free(p);p=q->next;}while(q->next!=q);printf("最后剩下的人的编号为%d",q->num);}voidmain(){intk

8、;structstu*head,*h;printf("请输入总人数:");scanf("%d",&n);printf("请输入退出圈子的人的编号:");scanf("%d",&m);printf("请输入开始报数的人的编号:");scanf("%d",&k);head=create();h=get_index(head,k);if(m%2==0)f1(head,h);el

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

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

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