我正在瀏覽鏈接列表,我有困惑。也許我在混合這個概念或其他東西。這是創建頭節點的代碼。鏈接列表的基礎知識混亂
struct node
{
int data;
struct node *link;
};
node *head;
void main()
{
head = new node;
}
1)我想知道的第一件事是我們如何在相同的節點結構中編寫struct node *link;
?因爲首先使用節點結構創建,那麼我們可以聲明它的指針。
2)node *head;
將已經聲明一個size節點的內存,那麼我們需要再次做head = new node;
?
'struct node * link'只是一個_pointer_到節點;直到使用'new'或可能'malloc()'創建一個正式節點纔會存在。作爲一名大學生,我也爲這個概念而努力。所以要清楚,沒有無限的節點鏈。 –
@TimBiegeleisen:我所理解的是'int'類型指針可以容納'int'類型變量的地址。類似地,節點類型指針將保存下一個節點的地址。如果我們聲明'int'類型的指針,並要求他保存節點的地址,那是不可能的。它是正確的嗎?我不確定 –
你目前有什麼是編譯器錯誤。 'void main()'是無效的C++。不要讓任何破碎的編譯器告訴你不同的東西。用'int main()'代替,你得到'head'指向'node'。直到'head-> link =&someNode;'或'head-> link = new node();'之後,該節點纔會指向任何東西。現在'link'處於危險狀態。在使用它之前,你沒有好的方法來測試'link'是否指向一個有效的節點,並且冒着未定義行爲的風險。建議向'node'添加一個構造函數,將'link'設置爲'nullptr'。 – user4581301