刪除單鏈表的非尾結點

2021-08-14 04:08:38 字數 666 閱讀 7790

思路:由於單鏈的的特性,在不遍歷鍊錶的情況下,很難找到要刪除節點(cur)的前乙個節點(pre),在刪除該節點(cur)後,沒有辦法將該節點之前的節點和之後的節點連線起來,因此我們採用替換刪除的方法,就是將該節點(cur)的下乙個節點(next)得到,然後將下乙個節點(next)的值賦給該節點(cur),再將下乙個節點(next)刪除,該節點(cur)鏈結上刪除節點(next)的下乙個節點(next->_next)就完成刪除了,這個方法要求要刪除的節點不是尾節點。如果是尾節點那該節點(cur)的下乙個節點(next)為null,不能夠進行訪問,就不能進行賦值,因此不能是尾節點。

編譯環境:(visual studio 2017)

void deletenonend(pnode pos)

}

// 刪除單鏈表的非尾結點 測試

void deletenonend_test()

以上單鏈表基礎操作函式可以在單鏈表中找到。

刪除無頭單鏈表的非尾結點並列印單鏈表

問題描述 假設有乙個沒有頭指標的單鏈表。乙個指標指向此單鏈表中間的乙個節點 不是第乙個,也不是最後乙個節點 請將該節點從單鏈表中刪除。一般鍊錶的刪除需要順著頭結點向下找到當前待刪節點的前驅節點,然後讓前驅節點指向後驅節點就行了。這裡,沒有頭結點,就沒辦法找到前驅結點。但我們可以採用 狸貓換太子 的做...

單鏈表結點刪除

本題要求實現兩個函式,分別將讀入的資料儲存為單鏈表 將鍊錶中所有儲存了某給定值的結點刪除。鍊錶結點定義如下 truct listnode struct listnode readlist struct listnode deletem struct listnode l,int m 函式readli...

刪除單鏈表某個結點

題目 刪除帶頭結點的單鏈表l中的結點p,p不是最後乙個結點,要求時間複雜度為o 1 解題思路 如果不要求時間複雜度為o 1 我們可以找出p的前驅結點,然後很容易就刪除p。現在要求時間複雜度為o 1 因為p不是最後乙個結點,知道結點p我們可以刪除p的後繼結點,那麼我們可以把p的後繼結點元素的值賦給p結...