我試圖找出一種算法從一個鏈表中刪除..單鏈表 - 刪除中間
我的想法是遍歷列表,找到我想要的節點之前的節點權刪除,將其稱爲Nprev,並將Nprev設置爲Nnext,其中Nnext位於要刪除Ndelete的節點之後。因此Nprev -> Ndelte -> Nnext
。
我的問題是,我無法弄清楚如何遍歷這個列表來找到我想要的節點之前的節點。
我一直在做這個與seg故障,因爲我分配的指針超出我假設的範圍。 它是一個非常凌亂的算法,我有很多if else語句。
有沒有更簡單的方法來做到這一點?
基本上我需要通過列表,對每個節點應用一個函數來測試它是否爲真 。如果爲false,則刪除該節點。 刪除第一個和最後一個並不難,但中間難倒了我。
請讓我知道是否有一些通用的方法來解決這個問題。我 一直在網上衝浪,找不到我需要的東西。
我用這個:http://www.cs.bu.edu/teaching/c/linked-list/delete/
但第4步之前的算法只刪除第一個節點在我的名單 並沒有做任何更多。 我該如何修改?
他們也給出了一個遞歸的例子,但我不明白它,並被它嚇倒。
我建議你看看同一頁面上的迭代示例。也許你會認爲一個更容易? – 2011-03-14 21:00:45