关于循环单链表的
原题本来是猴子选大王 首先输入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);
}
}
}结果发现很多的错误 单又不会改 求解答




