猴子选大王循环链表实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
猴子选大王循环链表实现

C++ n只猴子围成一圈,顺时针方向从1到n编号。之后从1号开始没顺时针方向让猴子从1,2,...,m依次报数,凡是报到m的猴子,就让其出圈,取消候选资格。然后不停地按顺时针方向逐一让报到m者出圈,是的剩下的一个就是猴王。 #include?iostream using?namespace?std; struct?monkey???????????????//结构声明 { int?num;????????????????//整型数,用于记录猴子号 monkey?*next;????????????//monkey结构指针 }; monkey?*head,*tail;?????????//monkey结构指针,全局变量 void?creat(int?nn)?????????//被调用函数 {??????????????????????????//函数体开始 int?i;?????????????????//整型变量i,用于计数???????? monkey?*p,*q;??????????//声明monkey结构指针p,q p=new?monkey;??????????//为p分配内存空间 p-num=1;??????????????//初始化p结点num域为1 p-next=NULL;??????????//初始化p结点next域为空 head=p;????????????????//链表头指针head赋值为p q=p;????????????????????//q赋值为p for(i=2;i=nn;i=i+1)?????//利用循环结构构造链表 { ??p=new?monkey;??????//为p配内存空间 ??p-num=i;??????????//初始化p结点num域为i,表示猴子号 ?????q-next=p;?????????//将p点加到链表尾部 ??q=p;????????????????//让指向链表尾部结点 ??p-next=NULL;???????//链表尾部指向空 } tail=q;??????????????//链表尾 tail-next=head;?????//链表尾部指向链表头,形成循环链表 } //被调用函数select,mm表示结点删除间隔 void?select(int?mm) {???????????????????????//函数体开始 int?x=0;????????????//声明整型值x,并初始化为0 monkey?*p,*q;???????//声明指针变量p,q q=tail;?????????????//q赋值给tail,指向循环链表尾部 do??????????????????//直到型循环,用于循环删除指定间隔的结点 { ??p=q-next;?????//p赋值给相邻的下一个结点 ??x=x+1;?????????//x加1 ??if(x%mm==0)????//x是否整除mm ??{ ???cout被删除的猴子号为p-num号\n; ???q-next=p-next;???????//删除此结点 ???delete?p;????????????//释放空间 ???p=NULL; ??} ??else ???q=p;??????????????//q指向相邻的下一个结点p }while(q!=q-next);???????//剩余结点数不为1,则继续循环 head=q;???????????????????//head指向结点q,q为链表中剩余的一个结点 }??????????????????????????????//函数体结束 int?main()????????????????????//函数体开始 { int?n,m;?????????????????//声明整型变量n,m head=NULL;???????????????//初始化head为空 cout请输入猴子的个数\n;???//提示信息 cinn;??????????????????//输入待插入结点的数据 cout请输入间隔\n;????//提示信息 cinm;??????????????????//输入间隔 creat(n);????????????????//调用函数creat建立循环链表 ????select(m);???????????????//调用函数select,找出剩下的猴子 cout猴王是head-num号\n;?????//输出猴王 delete?head;???????????//删除循环中最后一个结点 return?0; }??????????????

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档