在头部插入结点建立单向链表这个算法中有点疑惑,求详细解释,还有我不想听废话

LinkNode*CreateLinkList()//头插入法无头结点建立线性表{LinkNode*head,*p,*s;intx;intz=1,n=0;head=NUL... LinkNode *CreateLinkList()//头插入法无头结点建立线性表
{ LinkNode *head,*p,*s;
int x;
int z=1,n=0;
head=NULL;
printf("\n\t\t建立一个线性表");
printf("\n\t\t说明:请逐个输入整数,结束标记为“-1”!\n");
while(z)
{ printf("\t\t输入:");
scanf("%d",&x);
if(x!=-1)
{ s=(LinkList *)molloc(sizeof(LinkNode));
n++;
s->data=x;
s->next=head;
head=s;
}
else z=0;
}
return head;
}

当中
s->data=x;
s->next=head;
head=s;
这三句的解释
展开
 我来答
2247183310
2012-10-05 · TA获得超过193个赞
知道答主
回答量:21
采纳率:0%
帮助的人:34.4万
展开全部

LinkNode 这个结构体中有两个元素,一个是data代表结构体的数值,另一个是LinkNode类型的指针Next,表示的是当前结构体指向的下一个结构体,这样就形成了一个链状的存储结构。


s->data=x;     表示将x的值赋给s这结构体的数据段(data)

s->next=head;     表示s指向的下一个结构体就是名字为head的结构体,开始的时候head是空的,这样就形成了一个判断条件,当链表的某一结构体的next为null是链表就结束了。

head=s;     head表示链表的头,也就是整个链表的入口,这句话表示将最前面那个结构体赋给head做为链表的入口。

zyd427
2012-10-05 · TA获得超过354个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:250万
展开全部

执行情况如图所示:

 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
随便小羊
2012-10-05 · TA获得超过214个赞
知道答主
回答量:66
采纳率:0%
帮助的人:38.8万
展开全部
这是一个无头结点的链表呀,head在这里可以做头指针理解,是指向链表的第一个结点,s是插入结点,s的数据域为x。s->next=head,s的指针域指向第一个结点,就是在把第一个结点连在s的后面,s就成第一个结点,再把头指针指向s,用来记录整条链第一个结点的地址。
追问

我想问的是:图中1是怎么实现的?

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2012-10-05 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:7763万
展开全部
s是新申请的结点
s->data=x; 给结点数据赋值

s->next=head; 将原表挂到新结点之后
head=s; s成为新的头结点
追问

图中1是怎么实现的?

追答
原head指向25
申请新结点s
s->data=45; 给结点数据赋值45
s->next=head; 将原表25 挂到新结点45之后
head=s; s成为新的头结点 , 现在head指向45
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
紫竹姮
2012-10-05 · 超过29用户采纳过TA的回答
知道答主
回答量:93
采纳率:0%
帮助的人:57.1万
展开全部
s->data=x;
s->next=head;
head=s;

"s" 是刚开辟的节点的指针
s->data=x; :把从键盘读入的值付给节点里的data;
s->next=head; 因为是头插入法插入节点,所以把这一次刚开辟的节点指向上次的头结点,那新节点就为这次的头结点;
head=s; :为下次重新插入节点作准备,即设为旧节点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式