C++中指針爲NULL的本質似乎感到任意。我確信有一種方法可以讓我失蹤,但以下幾點對我來說很有意義,但似乎並不奏效。我有一個節點添加到鏈接列表下面的方法:關於C++中鏈接列表/指針的問題
LLNode *ll; // set to NULL in constructor.
void addToLL(Elem *e)
{
LLNode *current = ll;
while(true)
{
// edge case of an empty list.
if (ll == NULL)
{
ll = new LLNode(e);
break;
}
else if (current == NULL)
{
current = new LLNode(e);
break;
}
else {
current = current->next;
}
}
}
當添加第二個節點添加到列表中,對於current == NULL
的情況下不被抓住,因此它試圖調用current = current->next
和崩潰做訪問無效的記憶。爲什麼會這樣呢?一個LLNode有一個指向Elem的指針,一個指向另一個LLNode的指針。
您的插入邏輯不正確:您更改`current`指針,但是您絕不會將任何節點的`next`指針更改爲指向鏈接列表中的新元素。正如所寫,您的列表中永遠不會有多個節點。 – 2011-02-02 16:14:37
既然你說你在構造函數中將`ll`設置爲NULL,它是否是類的成員?這個addToLL函數是一個類的方法嗎? – tenpn 2011-02-02 16:14:40
對不起,爲了簡潔起見,我把它砍下來了。 ll和方法都是同一個類的成員。 – waterbo 2011-02-02 16:24:00