链表 - 使用后面的指针在末尾插入



我正在学习链表插入,并遇到了以下代码在链表的末尾插入节点(在一本相当古老和过时的书中,C++仍然使用我不知道为什么(:

void Insert_End(Node * np){
if (start == NULL){
start = rear = np;
}
else{
rear -> next = np;
rear = np;
}
}

我的问题是不应该 NP -> 下一个 = 后方;

PS :np是插入末尾的新节点,后面指向最后一个节点,起点指向第一个节点。

我的问题是不应该是 np -> 下一个 = 后方;

不,以下图片可以帮助您轻松理解。

当您第一次执行start = rear = np;时,所有 3 个节点可能如下所示。

------
|  np  |
------
^      ^
|       |
----      ----
|start|   | rear|
----      ----

对于连续插入:

当您这样做时rear -> next = np;您的列表可能如下所示。

注意:rear仍指向列表的上一个最后一个节点,np1指向np2

------         -----
|  np1 | ---> | np2 |
------        -----
^       ^
|       |
----      ----
|start|   | rear|
----      ----

当您执行此操作rear = np;rear将更新为指向当前最后一个节点。

------         -----
|  np1 | ---> | np2 |
------        -----
^              ^
|              |
----           ----
|start|        | rear|
----           ----

我的问题是不应该是 np -> 下一个 = 后方;

不,因为这样没有节点会指向np,因此它不会是任何列表的一部分(除了头部为np的列表(。此外,np不会在后面,因为它的next将指向一个节点(之前rear的节点(。该示例是正确的实现。

最新更新