#define
N 25
struct student{
int flag;
struct student* next;
};
int main()
{
int i=1;
//循环计数;
int j=1;
struct student * head;
//链表的头指针;
struct student * p;
//建表的临时指针;
struct student *q;
//前一个指针;
struct student *end;
//循环中用到;
int values[N+1]={0};
//记录每一个人第一次报数的数字的值。。
p=(struct student*)malloc(sizeof(struct student));
head=p;
q=p;
p->flag=i;
p->next=NULL;
i++;
//1建立链表;
while(i<=N)
{
p=(struct student*)malloc(sizeof(struct student));
p->flag=i;
p->next=NULL;
q->next=p;
q=p;
i++;
}
q->next=head;
//组成一个圆圈。。
end=q;
//循环中用到;
i=25;
//2循环求解的过程;
while(i>1)
{
if(values[head->flag]==0)
{
values[head->flag]=j;
}
if(j%3==0)
{//删除该节点;
p=head;
head=head->next;
end->next=head;
free(p);
j=1;
i--;
}
else{
end=head;
head=head->next;
j++;
}
}
printf("%d\n",values[head->flag]);
return 0;
}
自己的理解编写的程序,楼主可以自己看看。。。