[英]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.