一群猴子有50只,坐在一起选猴王,每只猴子都有一个编号1~50。从1号猴子开始报号,报到7号则退出;下只猴子继续从1开始报,依次循环,则最后的一只猴子为猴王。试求出这只猴子的编号。
#include<stdio.h>
#include<conio.h>
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}listnode,*linklist;
linklist creater()
{
int i;
linklist head,r;
listnode *p;
head=NULL;
r=NULL;
for(i=1;i<=50;i++)
{
p=(listnode *)malloc(sizeof(listnode));
p->data=i;
if(head==NULL)
head=p;
else
r->next=p;
r=p;
}
r->next=head;
return(head);
}
void main()
{
int i;
linklist p,r,s;
linklist newlist=creater();
p=newlist;
while(p->next!=p)
{
for(i=1;i<7;i++)
{
if(i==6)r=p;
p=p->next;
}
s=p->next;
printf("delete moneky:%d\n",p->data);
free(p);
r->next=s;
p=s;
}
printf("the kingdow of moneky:%d\n",p->data);
getch();
}