《n个人围成一圈,从第1个人开始数数,数到3的人出圈,输出出圈人的顺序.docx》由会员分享,可在线阅读,更多相关《n个人围成一圈,从第1个人开始数数,数到3的人出圈,输出出圈人的顺序.docx(2页珍藏版)》请在三一办公上搜索。
1、n个人围成一圈,从第1个人开始数数,数到3的人出圈,输出出圈人的顺序n个人围成一圈,从第1个人开始数数,数到3的人出圈,输出出圈人的顺序 C语言源代码 参加中兴面试,遇到这道题目,最后一道编程题,原题是输出最后留下的人在n个人中的号码数,本人经过改编了一下,感觉更加清晰的显示出整个过程,仅供大家学习交流之用。 基本思想:用循环链表的方式处理。 #include using namespace std; struct PERSON int num; PERSON*pNext; ; void PerServive(int N) PERSON*phead=(PERSON*)malloc(sizeof
2、(PERSON);/头指针 PERSON*p1,*p2,*p3; p1=phead; for (int i=1;inum=i; p1-pNext=p2; p1=p2; p1=phead-pNext;/由于head没有存放num值,故令p1=phead-pNext;释放p1的内存 free(phead); phead=p1; p2-pNext=phead; while (p1-pNext!=p1)/直到链表只有一个元素时结束循环 p2=p1-pNext; p3=p2-pNext; p2-pNext=p3-pNext;/将p1-next-next释放掉 coutnum号出局pNext; coutnum最终获胜endl; free(p1); void main PerServive(10); VC+6.0环境下,运行效果图: