关于循环单链表的
原题本来是猴子选大王 首先输入n和m n为总数 从第一个考试 每m个就退出 然后重新计数 直到最后一个 然后输出这个数程序代码:
#include<stdio.h> #include<malloc.h> typedef struct monkey{ int ID; struct monkey* next; } M; int main(){ int n,m,t,i; M *a,*b; while(scanf("%d%d",&n,&m)!=EOF){ a=(M*)malloc(sizeof(M)); b=a; for(i=0;i<n-1;i++){ b->ID=i; b=(M*)malloc(sizeof(M)); b->next=b; } b->ID=n-1; b->next=a; for(i=0;i<n;i++){ t=0; while(t<m){ a=a->next; t++; } b=a->next; a=a->next=a->next->next; free(b); if(i==n-1) printf("%d\n",a->ID); } } }结果发现很多的错误 单又不会改 求解答