每次到12就结束了为什么

qq_22674273 2016-03-27 12:16:16
#include <stdio.h>
#include<stdlib.h>
#define LEN sizeof(struct pupil)
struct pupil
{
int number;
struct pupil *next;
};
void main(int argc, char *argv[])
{
int count = 0, i = 0;
struct pupil *p1, *p2, *head;
head = p2 = p1 = (struct pupil*)malloc(LEN);
p1->number = count + 1;
count++;
while (count < 13)
{

if (count == 12)
{
p1 = (struct pupil*)malloc(LEN);
p1->next = head;
p1->number = count + 1;
p1 = head;
break;
}
p1 = (struct pupil*)malloc(LEN);
p2->next = p1;
p2 = p1;
p2->number = count + 1;
count++;
}
count = 0;
while (i<12)
{
if (p1->number!=0)
{
count++;
if (count % 3 == 0)
{
printf_s("出来的是%4d\n", p1->number);
p1->number = 0;
i++;
}
}
p1 = p1->next;
}
system("pause");
}
...全文
87 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灸舞 版主 2016-03-27
  • 打赏
  • 举报
回复
因为count=11时,新创建的节点的next指针你忘记让他指向count=12时产生的节点了,这样就导致循环链表断了 这样的话,当循环到这里的时候就会报错,count==12里要多加一句p2->next = p1;

if (count == 12)
{
	p1 = (struct pupil*)malloc(LEN);
	p2->next = p1; //楼主少了这句!!!!!!!!!!!!!!!!!!!!!!
	p1->next = head;	
	p1->number = count + 1;
	p1 = head;
	break;
}

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧