怎么做网站推销自己的产品,如何在国外做网站,动易网络 官方网站,赣州网约瑟夫环问题是比较经典的问题#xff0c;原来做的题目是依次输出数字#xff0c;而原来的循环链表结构不改变#xff0c;今天遇到一道题是要求按照顺序重新组成一个循环单链表。 题目#xff1a;一些人围坐一圈报数#xff0c;形成一个循环单链表#xff0c;当报数是m或… 约瑟夫环问题是比较经典的问题原来做的题目是依次输出数字而原来的循环链表结构不改变今天遇到一道题是要求按照顺序重新组成一个循环单链表。 题目一些人围坐一圈报数形成一个循环单链表当报数是m或m的倍数时出将节点从单链表中删除重新加入新的循环单链表最后形成一个新的循环单链表。 struct Node { int data; Node *next; }; void circle(Node** head,int m) { Node* tmp1*head; Node *tmp2(*head)-next; int cnt1; while(1) { cnt; if(cnt%m0) { *headtmp2; tmp1-nexttmp2-next; tmp2tmp2-next; break; } else { tmp1tmp1-next; tmp2tmp2-next; } } Node *tmp3*head; while(tmp1!tmp2) { cnt; if(cnt%m0) { tmp3-nexttmp2; tmp3tmp3-next; tmp1-nexttmp2-next; tmp2tmp2-next; } else { tmp1tmp1-next; tmp2tmp2-next; } } tmp3-nexttmp2; tmp2-next*head; } int main( int argc, char** argv ) { Node a[10]; for(int i0;i9;i) { a[i].datai1; a[i].nexta[i1]; } a[9].data10; a[9].nexta[0]; Node *aaa[0]; Node **aaaaa; circle(aaa,5); return -1; } 原始1 2 3 4 5 6 7 8 9 10 1 2 。。。 结果5 10 6 2 9 8 1 4 7 3 5 10 6 2 。。。 转载于:https://blog.51cto.com/buptdtt/989174