簡體   English   中英

有人可以向我解釋在 C++ 中創建列表時我在做什么嗎?

[英]Can someone explain to me what I'm doing when creating a list in C++?

雖然我了解列表和指針背后的概念,但我只是不理解腳本,不理解每個部分在說什么。 這是我們在 class 中所做的一個例子:

struct Node
{
   int info;
   struct Node * next;
};

struct Node * first; 

first=NULL;

我確實得到了第二部分:簡單地定義列表中的第一個元素並為其分配一個空值。 但是struct Node部分呢?

struct Node
{
   int info;
   struct Node * next;
};

定義一個名為Node結構類型,包含 2 個數據成員,一個int和一個struct Node*指針。 struct是一種將 memory 中的相關數據組合在一起的方法class是另一種方法。 這些更正式地稱為復合類型

當在節點鏈表中使用時,每個節點的next成員將被設置為指向列表中的下一個節點。 列表中的最后一個節點會將其next成員設置為 NULL。 從列表中的第一個節點開始,您可以將整個列表從一個節點迭代到下一個節點,直到達到 NULL。

struct Node * first; 

聲明一個名為first的指針變量,類型為struct Node *struct關鍵字在 C++ 中是可選的,但在 C 中是必需的)。

first=NULL;

first將指針變量設置為值NULL (即,對於其中沒有節點的鏈表)。

准備五個衣架。 考慮他們每個人一個Node類型的變量( struct Node是相同的,只是在 C 風格的語法中, C++ 編譯器也接受)。
你的手first是指針(C++ 語法中的Node *類型和 C 風格中的struct Node *類型)。
你的手仍然是空的就像first是 NULL。

拿一個衣架在你手里。 (握住它的一端,而不是掛在鈎子上。)
現在first指向第一個衣架。 (掛住第一個衣架,掛鈎朝下。)

將第二個衣架掛在第一個衣架的掛鈎上,使第二個掛鈎空着並朝下。 您已將第二個元素添加到列表中,方法是使第一個元素的鈎子/指針保持在第二個元素上。 第二個鈎子是空的,NULL。

將第三個衣架掛在第二個、第三個掛鈎上並朝下空着。

同樣添加第四個。

你的第二只手,如果你曾經使用過它,是一個輔助指針,你經常需要一個。

無論你被要求用鏈表做什么,先用你的五個衣架試試,
這應該可以幫助您解決遇到的所有編程問題。

祝你好運。

我在想像這樣的衣架

\----------/
 \        /
  \      /
   --|-- 
     J

不是這樣的

----   ----
    \ /
     J

如果你有金屬絲制成的衣架,就像許多洗衣服務所使用的那樣,你可以稍微彎曲它以形成一個方便的掛鈎位置。

\----^-----/
 \        /
  \      /
   --|-- 
     J

暫無
暫無

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

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