猴子选大王链表实现

2025-02-27 12:39:19
推荐回答(2个)
回答1:

# include
# include
struct monkey
{
int number;
struct monkey *next;
};
struct monkey *p,*q,*head=NULL,*temp;
struct monkey *add(struct monkey *head,int end)
{ int i=1;
while(i<=end) //END代表猴子总数
{
q=(struct monkey *)malloc(sizeof(struct monkey));
q->number=i;//为每个猴子编一个号码
if(head==NULL)
{
head=p=q;
}
else
if(i==end)
{
p->next=q;
q->next=head;
}
p->next=q;
p=q;
i++;
}
return head;
}
struct monkey *game(struct monkey *head,int out,int end)
{
p=head; int i=1;
while(p->next!=p)
{
for(i=1;i {
p=p->next;
// i+=out;//OUT代表猴子退出的数
}

/*if(p==head) //如果是头结点HEAD指向下一个值
{
temp=head;
head=temp->next;
free(temp);//释放头结点
}*/

temp=p->next; //删掉p->next
p->next=temp->next;
p=p->next;
free(temp);//删掉p->next后并释放他
}
printf("%d",p->number);
return NULL;
}
void main()
{
int n,m;
printf("\n请输入猴子个数\n");
scanf("%d",&n);
printf("\n请输入退出去的数\n");
scanf("%d",&m);
head=add(head,n);
head=game(head,m,n);
}

回答2:

运行有很多错误