2011-02-12 30 views
1

我有一些概率增加一個新的elment在我圓鏈表...當我嘗試添加的第一個...圓鏈表C++

if(empty() && pos ==1) 
{ 

    newnode = new Node(ele); 
    newnode->next = newnode; 

    last = newnode; 
} 

..我一個glibc的檢測:雙倍免費或腐敗(fasttop)...你知道爲什麼嗎?

這是因爲我必須指出自己的.next沒有?我該怎麼做才能指出我自己的缺點?

+1

雙人自由意味着什麼被釋放。 – 2011-02-12 21:34:19

回答

1

這應該是你的頂級節點,考慮它的空(),對吧?所以,你應該在這裏設置你的LL頭節點。而且,在你的代碼中,你正在設置節點的下一個節點。您應該:

currentNode->Next = new Node(); 
lastNode = currentNode; 

在您的頭節點設置後執行此操作。

+0

之後?節點* elem; elem newnode =新節點(ele); – Roots 2011-02-12 21:48:59

1

使用循環鏈表的主要原因是簡化

爲此,您應該始終(使用循環列表)使用標頭節點

對於一個空的循環列表,標題節點被鏈接回自己,並且是列表的永久部分,它不會攜帶任何數據,除非在某些情況下是一個標記值。

使用標頭節點時,插入第一個節點與插入第二個或第三個完全相同的代碼相同。

所以,請試試看。

乾杯&心連心,