程式設計之美 從無頭單鏈表中刪除結點

2021-07-04 19:53:15 字數 610 閱讀 6618

問題:假設有乙個沒有頭指標的單鏈表。乙個指標指向此單鏈表中間的乙個節點(不是第乙個也不是最後乙個),如何將該結點刪除?

分析:假設給定的指標為pcurrent,node *pnext=pcurrent->next(pnext指向pcurrent的下乙個結點)。根據題意,pnext!=null.

若pcurrent指向中間要刪除的節點b,

如下圖所示:

但是該鍊錶沒有頭指標,無法掃瞄到結點a。

但是我們可以換一種思路,可以將結點c的資料賦給b,然後將真正的c結點刪除,因為刪除c結點是很方的,知道其前驅結點。

這種方法很妙,結點都是一樣的,只是其中的data不一樣,現在我們可以把data複製給b結點,再刪除真正的c結點,留下的是「假」的c結點。

《程式設計之美》 從無頭單鏈表中刪除節點

問題 假設有乙個沒有頭指標的單鏈表。乙個指標指向此單鏈表中間的乙個節點 非第乙個節點,也非最後乙個節點 請將該節點從單鏈表中刪除。分析與解法 若要刪除該節點,正常情況下,應該要知道該節點的前面節點的指標,但是由於單鏈表中沒有頭結點,所以無法追溯到該節點前面的那個節點,因此,這裡採用了 狸貓換太子 的...

程式設計之美 從無頭單鏈表中刪除節點

1.問題描述 假設有乙個沒有頭指標的單鏈表。乙個指標指向此單鏈表中間的乙個節點 不是第乙個,也不是最後乙個 請將該節點從單鏈表中刪除。如下圖所示 2.分析與解法 假設給定的指標為pcurrent,node pnext pcurren next 其中pcurren next!null,如下圖,因為沒有...

程式設計之美3 4 從無頭單鏈表中刪除節點

假設有乙個沒有頭指標的單鏈表,乙個指標指向此單鏈表中間的乙個節點 不是第乙個,也不是最後乙個節點 請將該節點從單鏈表中刪除。作者巧妙地把刪除無頭單鏈表節點的問題做了轉換,把要刪除的節點的下乙個節點中的資料部分傳遞給此節點,然後再刪除下乙個節點。可見,在不影響效率和複雜度的前提下,我們完全可以不受題目...