您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > 牛逼的猴子选大王源代码
#includestdio.h#includestdlib.htypedefstructmonkey//定义一个monkey的结构体,link表示该结构体的指针{intnum;//猴子编号structmonkey*next;//下一个猴子的地址指针}Monkey,*LINK;main(){LINKp,head,p2;inti,m,n;printf(输入猴子总数:\n);scanf(%d,&m);printf(输入淘汰数:\n);scanf(%d,&n);head=p2=(LINK)malloc(sizeof(Monkey));//开辟空间,头指针for(i=1;im;i++)//生成猴子结构体的循环链表{p=(LINK)malloc(sizeof(Monkey));//开辟Monkey型的结构体空间用来存各个猴子结构p2-next=p;p2=p;}p2-next=head;//链表到了结尾,指针指向表头,如此不停循环下去,构成一个环,即为循环链表p=head;printf(对猴子进行编号:\n);for(i=1;i=m;i++){p-num=i;printf(%d号猴子\n,p-num);p=p-next;//指针指向下个猴子}printf(\n);i=0;p=head;//将p指向了链表的表头printf(开始报数:\n);while(1){i++;printf(%d号猴子报:%d\n,p-num,i);if(i==n)//如果这一个报到了数n{i=0;//再次从1开始报数printf(%d号猴子被淘汰\n,p-num);//这个编号的猴子被淘汰printf(\n);p2-next=p-next;//将该猴子从链表中删除p=p2-next;//指针指向下一个猴子}else//没有报到n的继续报数{if(i!=n)p2=p;p=p-next;}if(p-next==p)//当下一个报数的猴子为本身时,说明只剩自己,即当选大王,退出循环break;}printf(最后胜出:%d号猴子当选大王\n,p-num);}/*一种运行结果如下:输入猴子总数:8输入淘汰数:2对猴子进行编号:1号猴子2号猴子3号猴子4号猴子5号猴子6号猴子7号猴子8号猴子开始报数:1号猴子报:12号猴子报:22号猴子被淘汰3号猴子报:14号猴子报:24号猴子被淘汰5号猴子报:16号猴子报:26号猴子被淘汰7号猴子报:18号猴子报:28号猴子被淘汰1号猴子报:13号猴子报:23号猴子被淘汰5号猴子报:17号猴子报:27号猴子被淘汰1号猴子报:15号猴子报:25号猴子被淘汰最后胜出:1号猴子当选大王Pressanykeytocontinue*/
本文标题:牛逼的猴子选大王源代码
链接地址:https://www.777doc.com/doc-4554219 .html