写作业产物 这里以3个去一个总共104个,谁是剩下的最后一个为例
#include<stdio.h>
#include<stdlib.h>
typedef struct sqlist
{
int data;
struct sqlist *next;
}sqlist;
sqlist * creatlist(sqlist *head,int n)
{
int i;
sqlist *p,*q;
head=(sqlist *)malloc(sizeof(sqlist));
head->data=1;
head->next=NULL;
p=head;
for(i=2;i<=n;i++)
{
q=(sqlist *)malloc(sizeof(sqlist));
q->data=i;
p->next=q;
q->next=NULL;
p=q;
}
q->next=head;
p=head;
return p;
}
sqlist * y(sqlist *head)
{
int i,k;
sqlist *L,*p,*q;
p=head;
for(k=1;k<104;k++)
{
for(i=0;i<2;i++)
{
L=p;
p=p->next;
}
q=p;
L->next=p->next;
p=p->next;
free(q);
}
return p;
}
int main()
{
sqlist *L;
L=creatlist(L,104);
L=y(L);
printf("第%d个人存活下来\n",L->data);
return 0;
}