请问我下面的程序可行吗?如果不行,要怎么修改,谢谢各位啦!!
13个人围成一圈从1开始报数凡报道3的倍数离开圈子,然后数下去直到剩下最后一个人止,最后输出留在圈子的人原来的位置是多少?#include<stdio.h>
#define NULL 0
struct person
{int num;
struct person *next;
}a[13]={{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11},{12},{13}};
void main()
{
struct person *p,*head,*p1,*p2;
p1=head=a;
while((p1->num)%3!=NULL&&p1->next!=NULL)
{p2=p1;p1=p1->next;
}
if((p1->num)%3==NULL)
{if(p1==head)
head=p1->next;
else
p2->next=p1->next;
}
printf("the remain number:\n");
p=head=a;
if(head!=NULL)
do
{printf("%d\n",p->num);
p=p->next;
}while(p!=NULL);
}