2016-03-06 60 views
0

我創建了一個鏈表。插入和遍歷工作正常。下面給出了我釋放節點的部分。我有三個指針now, nxt, start所有這些數據類型的node (the structure)C++鏈接列表 - 釋放節點給出錯誤

now=start; 
for(int i=0;i<n;i++){ 
    nxt=now->link; 
    delete now->link; 
    now=nxt; 
} 

start存儲第一節點的地址,now商店下處理當前節點的地址,nxt存儲作爲下一個節點的地址從節點的地址now的鏈接部分訪問。

當我嘗試執行程序的一切,直到刪除工作正常,當它到達刪除程序崩潰,並給「標題:停止工作」的錯誤。代碼有什麼問題?

+0

你現在創建 - >鏈接與「新」的聲明? – Pooya

+0

你確定鏈表中有完全'n'個節點嗎? – user4815162342

+0

是鏈表有n個節點 –

回答

0

我想這就是問題所在:

delete now; 
now=nxt; 

你刪除的東西,然後執行它的任務。

+0

當我刪除'now-> link'時,會發生同樣的情況。 –

+0

賦值是在*指針*上執行的,而不是被刪除的對象。 'while(now){nxt = now-> next;現在刪除; now = nxt; }'是迭代和刪除鏈表的正確方式(和慣用的方式)。問題中的新代碼有問題,因爲它繼續使用已刪除的對象。 – user4815162342