简单的建立链表问题?

sandbad0x 2009-08-10 12:04:35

nodelist *p,*pf,*head;
int a[5];
for(int i=1;i<=3;i++)
{
p = (nodelist *)malloc(sizeof(nodelist));
printf("请输入第%d个结点值:",i);
scanf("%d\n",&a[i]);
p->data = a[i];
if(i == 1)
pf = head = p;
else
{
pf->next = p;
pf = p;
}
}









部分代码如上所示,为了实现新建链表,但是运行时结果有点不可理解:
请输入第1个结点:1
2 <----------------
请输入第2个结点:3
请输入第3个结点:4

为什么多输入了一个,也就是多了一个scanf(如箭头所示)
...全文
101 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
nodelist *p,*pf,*head;
int a[5];
for(int i=1;i<=3;i++)
{
p = (nodelist *)malloc(sizeof(nodelist));
printf("请输入第%d个结点值:",i);
scanf("%d\n",&a[i]);改成 scanf("%d",&a[i]);具体情况与缓冲区有关,建议查看一下scanf的缓冲处理机制
p->data = a[i];
if(i == 1)
pf = head = p;
else
{
pf->next = p;
pf = p;
}
}

acdbxzyw 2009-08-10
  • 打赏
  • 举报
回复
不会。。。
sandbad0x 2009-08-10
  • 打赏
  • 举报
回复
估计是太简单了,没人理会...
sandbad0x 2009-08-10
  • 打赏
  • 举报
回复
原来如此。。

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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