/*设编号分别为1,2,。。。,n个认围坐成一圈, 约定序号为k的人从1开始技术,数到m的人出列,他的下一 位又从1开始报数,数到m的那个人出列,依次类推,直到所有人出列为止。 例如: n = 8,k = 3 ,m = 4,最终出队的结果?(单向循环链表实现)。 */ void LooplistPrint3(looplist *head,int n,int k,int m) // 8 3 4 { looplist *p = head; looplist *q; int h = 1; for(int j = 1; j < k; j++) { p = p->next; } int i; while(n != 1) { i = 1; while(i < m-1) { p = p->next; i++; } q = p->next; printf("%d : %d\n",h++,q->data); p->next = q->next; p = p->next; printf("%d \n",p->data); free(q); n--; } printf("%d\n",p->data); }