为什么输入的数中有1,最后得不到想要的结果
#include<stdio.h>#include<stdlib.h>
int i=1;
typedef struct Node
{
int data;
struct Node *next;
}node;
node *create() //创建循环链表
{
node *head=NULL,*p;
head=(node *)malloc(sizeof(node));
p=head;
printf("请输入每个人手里的数字,如果小于1,那么结束输入,那个人不作数。\n");
printf("请输入第%d个人手里的数字:",i);
scanf("%d",&p->data);
node *s,*p1;
while(p->data > 0)
{
s=(node *)malloc(sizeof(node));
printf("请输入第%d个人手里的数字:",(++i));
scanf("%d",&s->data);
p->next=s;
p1=p;
p=s;
}
p1->next=head;
return (head);
}
int main()
{
int j;
int m;
node *temp;
node *p=create();
printf("开始人选一个正整数作为第一次报数上限:");
scanf("%d",&m);
while(p != p->next)
{
if(m == 1)
{
printf("%d->",p->data);
temp=p;
m=temp->data;
p=p->next;
free(temp);
}
else
{
for(j=1;j<m-1;j++)
p=p->next;
printf("%d->",p->next->data);
temp=p->next;
p->next=temp->next;
m=temp->data;
free(temp);
p=p->next;
}
}
printf("%d\n",p->data);
return 0;
}