资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
/用单循环链表解决约瑟夫问题#include using namespace std;typedef struct Lnodeint data;Lnode *next;Lnode;class JosephusCirclepublic:void creat_list();void Josephus();private:int n;int s;int m;Lnode *head;void JosephusCircle:creat_list() /初始化cout请依次输入,约瑟夫圈人数、报数起始位置、报几个数:nsm;if(m=0) cout报数的个数不许为0!; coutnext=head; tail=head;for(int i=0;idata=(i+1);tail-next=p;tail=p;p-next=head-next;void JosephusCircle:Josephus()Lnode *p=head-next;Lnode *q=head; /q指针紧随其后int j=1;while (j!=s) /找到报数起点p=p-next;q=q-next;+j;while (p!=q)for(int i=0;inext; q=q-next;coutdatanext; /删除节点 q-next=p;coutdata; /输出最后一个出圈人编号void main()JosephusCircle Jose;Jose.creat_list();cout出圈顺序为:endl;Jose.Josephus();coutendl;
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号