C语言大神谁能解释下动态链表 p2->next =p1; p2=p1;

如题所述

可以把图片另存为后放大看清楚一点

追问

能用文字说明不? 大神 解释清楚点 我好加分

追答

我怎么说的清楚?

图还不够直观?
好吧。
首先:p2->next = p1
你要清楚这句里面的p1是个指针哦指向了链表中的尾节点书中说了对不对。
那么p2->next 是什么意思? 就是最后一个节点中的next变量(这个变量是一个 可以存放结构体变量的指针) 那么这样子的话你还不明白? p1是一个新的节 点的地址啊 因此可得以下:
p2->next = p1 等于 (当前链表的为节点中的指针域中的指针变量next) = 新的节点地址
最后:p2 = p1; 你想想书中不是说p2是指向链表中的尾节点吗?那么这句话就是说p2不再指向原先的尾节点了 因为p1指向的节点才是当前链表的尾节点啊。对不对尾节点已经被新节点替代了当然要把p2的指向改变为指向当前尾节点啊。要不然再次插入新节点这么插入啊?
其实按照我们自己思考问题的方式就是说 有一个指针是要在插入新节点时能提供链表中最后一个节点的地址而这里的p2就担当此任, 那么p1就担当了每次都会提供一个新的节点地址, 只有这2个都ok才可以实现插入新节点啊?你说是不是?只有这样我们才可以重复的做插入的操作啊,其实这格过程是重复的明白了吗?

温馨提示:答案为网友推荐,仅供参考
相似回答