C的约瑟夫环改错#include
主要问题:
1 inputList 循环漏掉了i++,造成死循环
2 LinkList 的头节点不应计入计数
另外,secret 不需要保存到节点中
当然,这段程序还可以优化得更简单。
附改过的程序:
void inputList(LinkList L,int n)
{
Node *s,*r;
int i=1;
r=L;
while(inum=i++;
s->secret=5;
r->next=s;
r=s;
}
r->next=L;
}
void searchList(LinkList L,int k)
{
int i=1,flag;
Node *p,*temp,*r;
p=L;
/...全部
主要问题:
1 inputList 循环漏掉了i++,造成死循环
2 LinkList 的头节点不应计入计数
另外,secret 不需要保存到节点中
当然,这段程序还可以优化得更简单。
附改过的程序:
void inputList(LinkList L,int n)
{
Node *s,*r;
int i=1;
r=L;
while(inum=i++;
s->secret=5;
r->next=s;
r=s;
}
r->next=L;
}
void searchList(LinkList L,int k)
{
int i=1,flag;
Node *p,*temp,*r;
p=L;
//r=L->next;
//while(r->next!=L)
while (L->next->next != L)
{
//flag=1;
//while(flag==1)
if(inext;
else
p = p->next;
i++;
}
else if(i==k)
{
if (p->next == L)
temp = L->next;
else
temp = p->next;
// k=temp->secret;
printf("the one who leaved team was: %d \n",temp->num);
if (p->next == L)
L->next = temp->next;
else
p->next=temp->next;
free(temp);
i=1;
}
flag=0;
}
// while(flag==0)
printf("=========================\n");
printf("the one who was sent to was: %d \n",L->next->num);
} 。
收起