[求助]13个数字,隔2去1,输出最后剩下的数
13人围一圈,从第1人开始报数,凡报到3者退出圈子,找出最后留在圈中的人原来的序号./*13个数字,隔2去1,输出最后剩下的数*/
#define STU struct stu
#define LEN sizeof(struct stu)
STU
{
int num;
STU* next;
};/*申请结构链表*/
STU* cart(int n)/*建立一个n个结点的链表*/
{
int i;
STU *head,*pd,*pf;
for(i=1;i<=n;i++)
{
pd=(STU*)malloc(LEN);/*申请一块内存,用于存放一个结点*/
pd->num=i;
if(i==0)
pf=head=pd;/*如果产生的是第一个结点,则head指向该结点*/
else
pf->next=pd;
pd->next=NULL;
pf=pd;
}
pf->next=head;
return head;/*返回表头*/
}
void main()
{
int i,n;
STU *pl,*pt;
printf("请输入链表成员的个数");
scanf("%d",&n);
pl=cart(n);
while(pl->next != pl)/*链表中结点的个数不为1时*/
{
for(i=0;i<3;i++)
{
pt=pl;
pl=pl->next;
}
pt->next=pl->next;
free(pl);/*释放被删节点内存*/
}
printf("%d",pl->num);
return;
}
编译提示: Erroy:Undefined symbol 'NULL' 未定义的符号"NULL"
求各位指点是怎么回事?