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

来源:百度知道 编辑:UC知道 时间:2024/05/18 09:33:17
小弟我才学数据结构,今天有个程序看得不是很明白,请个位大虾给讲讲
/******************************/
/* 尾插法建立带头结点的单链表 */
/******************************/
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;
}

注释是我自己加的,程序我运行了没有问题,请各位帮帮忙,帮我回答一下~!先谢谢了

EOF!=(scanf("%d",&x)是什么意思?把scanf("%d",&x)写在while语句的上面为什么不行?
这里是指输入成功的话,执行下面的大括号里面语句。
pre->next是指当前结点的前一个结点,这里用于交换位置的。你可以画个图来查看他们之间的联系,就会很清楚了

用c语言尾插法建立带头结点的单链表 求数据结构:建立一个带头结点的单链表函数 求一完整程序:在带头结点的线性单链表中插入一元素i(请用C语言表述)!谢谢! 编一程序:①建立一个数据域为1至10的带头结点的链表; 删除叶结点,C语言! 二叉树结点的查找C语言实现 数据结构题:创建一个不带头结点的链栈 用C语言编写:建立一棵以二叉链表结构存储的二叉树,并对其进行遍历。求该二叉树中的结点个数等操作。 用C语言编写程序,创建一个二叉树的二叉链表结构,然后输出从根结点到所有叶子结点的路径。 设计内容:建立一个带头的单链表:L={12,13,21,24}。结点的DATA域为整型数据,由键盘输入