程序如下:
M和N的值在程序开始的define处修改。
#include
#define M 3
#define N 2
typedef struct node{
int num;
struct node *link;
} node;
main(){
int a=1;
node *head,*p,*q;
head=(node *)malloc(sizeof(struct node));
head->num=a;
p=head;
while(a!=M) //构建单链表
{
a+=1;
q=(node *)malloc(sizeof(struct node));
q->num=a;
p->link=q;
p=p->link;
}
p->link=head; //构建循环链表
p=head;
while(1) //开始报数
{
a=1;
while(a
p=p->link;
a+=1;
}
if(p->link==p)
{
printf("猴王编号为: %d\n",p->num);
break;
}
else p->link=p->link->link; //删除报到N的猴子
p=p->link;
}
}
明天给你了,你怎么联系了