一个数据结构C语言的基础理解问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 16:31:53
已知L是无表头结点的单链表,其中P结点既不是首元结点,也不是尾元结点.

1)在P结点后插入S结点的语句序列是
a)S^.next:=P^.next
b)P^.next:=S
这是问题的答案,但我不理解.
我想问其实只是b)步骤就OK啦,为什么要让S的下一个元素等于P的下一个,
如果是这样不就成了,在P结点后插入S的下一个元素?

2)在P结点前插入S结点的语句是
a)Q:=P //我理解定义一个Q是P
b)P:=L //让P指到表头
c)WHILE P^.next <> Q DO P:=P^.next //让P节点等于P NEXT那么不是等于原来的P吗????
d)S^.next = P^next
e)P^.next:=S
f)P:=Q;
这是第二题的答案,但我也不理解,
对指针的理解我很混乱,请详细对此问题解释一下,谢谢

1,如果按照你的方法原来P后面的节点就扔了
2,是让P指向原来P的前趋,实际上d)S^.next = P^next 改成S->next = Q一样
你可以把链表理解成带尾挂钩的小东东,想想怎么在一个点的前面后面接上原来零散的一个

这是Pascal吧。。。
S^.next并不是S=S^.next...
假设P的下一个节点是Q
初始状态
P->Q

S
1)
P->Q
^
S--|
2)
P Q
| ^=>P->S->Q
S--|
第二题P=P^.next怎么会不变呢?
P->P^.next->P^.next^.next->P^.next^.next^.next
因为Q=P
P->P^.next->Q^.next^.next->Q^.next^.next^.next
P=P^.next=>P指向下一节点=>P->Q^.next^.next->Q^.next^.next^.next
懂了没?