typedef int data_t; typedef struct node { data_t val; struct node * next; }Node, *Pnode; void fun(int n, int k, int m) { //创建链表 Pnode p,r,L = NULL; int i; for (i = 1; i <= n; i++) { p = (Pnode)malloc(sizeof(Node)); p->val = i; if (NULL == L) { L = p; } else { r->next = p; } r = p; } r->next = L; r = L; //find K for (i = 0; i < k-1; i++) r = r->next; //如果不是只剩下一个节点的话,一直循环 while( r->next != r) { for(i = 0; i < m-2; i++) r = r->next; p = r->next; r->next = p->next; r = r->next; printf("%d ", p->val); free(p); } printf("%d ",r->val); free(r); puts(""); } int main(int argc, const char *argv[]) { fun(8,3,4); return 0; }