簡體   English   中英

鏈表-使用后部指針末尾插入

[英]Linked list - Insert at end using a rear pointer

我正在學習有關鏈表插入的知識,並遇到了以下代碼,以便在鏈表的末尾插入一個節點(在C ++仍然使用的一本相當陳舊且過時的書中,我不知道為什么):

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

我的問題是不應該是np-> next = Rear;

PS:np是在末端插入的新節點,后方指向最后一個節點,起點指向第一個節點。

我的問題是不應該是np-> next = Rear;

不,下面的圖片可以幫助您輕松理解。

當您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-> next = Rear;

不可以,因為這樣就不會有節點指向np ,因此它不會成為任何列表的一部分(頭為np的列表除外)。 此外, np不會在后面,因為它的next將指向一個節點(之前位於rear的節點)。 該示例是正確的實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM