在一个单链表head中,一直p指向其中的一个结点,若要在它之前插入一个结点*s,则执行的运算是?

咸亨酒保 1年前 已收到1个回答 举报

topfire 幼苗

共回答了22个问题采纳率:86.4% 举报

我也是先学的~首先 你要明白 这个
链表结构 (L表头) (节点1) (节点2) (3) (4)
这里 L下一个指向节点1 ,节点1下一个为节点2;
L->next=节点1 ,节点1->next=节点2;
1.头插法的意思是把一个节点插到 L 和节点1 之间 ,让你插入的节点P 成为第一个节点 .
所以有了上面的p–>next=head–>next(节点1) ; head–>next=p ;
你现在想啊 head–>next=p ; p–>next=head–>next ;就不对了,执行了第一个后,head下一个就是p了 再执行 p–>next=head–>next 就矛盾了.
2,尾插法 么 你定义的p 开始和表头在同一位置,表是空的,所以
p->next=NULL;
执行 q= (LNode *)malloc(sizeof(LNode));
q–>data=data; /* 数据域赋值 */
q–>next=p–>next; p–>next=q; p=q ;
(head) .(p)
p一直是作为最后一个节点的,p指向空
你看 q->next=p->next 不就是q的指向空;
然后让p的下一个为q(p–>next=q;),不就是把q接到了表的末端,
再使 p=q,让p一直是链表的最后一个节点,才能后面不停的尾插入·

1年前

6
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.026 s. - webmaster@yulucn.com