用c语言尾插法建立带头结点的单链表

小弟我才学数据结构,今天有个程序看得不是很明白,请个位大虾给讲讲/******************************//*尾插法建立带头结点的单链表*//***... 小弟我才学数据结构,今天有个程序看得不是很明白,请个位大虾给讲讲
/******************************/
/* 尾插法建立带头结点的单链表 */
/******************************/
node* Creat_Node()
{
node *head,*pre,*p;
int x;
head=(node*)malloc(sizeof(node));//head建立一个结点
head->next=NULL;//head的next指向一个空值
pre=head;//把head的值附给指针变量pre
printf("输入各结点的值,以0结束:");
while(EOF!=(scanf("%d",&x))&&x!=0)//输入第一个结点值。问题1:EOF!=(scanf("%d",&x)是什么意思?把scanf("%d",&x)写在while语句的上面为什么不行?
{
p=(node*)malloc(sizeof(node));//p指针开辟一个新的结点
p->info=x;//把x的值附给p新开辟的结点
p->next=pre->next;//问题2:这条语句我很困惑,pre->next是指向第儿个结点的值的,而p->next是指向新开辟结点的下一个结点啊。
pre->next=p;
pre=pre->next;
}
return head;
}

注释是我自己加的,程序我运行了没有问题,请各位帮帮忙,帮我回答一下~!先谢谢了
展开
 我来答
hyb8181
2007-10-01 · 超过15用户采纳过TA的回答
知道答主
回答量:131
采纳率:0%
帮助的人:67.6万
展开全部
EOF!=(scanf("%d",&x)是什么意思?把scanf("%d",&x)写在while语句的上面为什么不行?
这里是指输入成功的话,执行下面的大括号里面语句。
pre->next是指当前结点的前一个结点,这里用于交换位置的。你可以画个图来查看他们之间的联系,就会很清楚了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式