從無頭鍊錶中刪除節點

2021-06-28 03:40:56 字數 761 閱讀 9088

《程式設計之美》第3.4節:從無頭鍊錶中刪除節點

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

解法:題目中已經說明既不是頭節點也不是尾節點,因此不用考慮特殊情況。要解這個題首先的思路是尋找前乙個節點的指標,但是由於這是乙個單鏈表,前一節點的next指標無論如何是不可能得到的,因此肯定不能這麼算。只能有乙個辦法了,就是把當前節點的data值換成其下乙個節點,然後把下乙個節點給刪除掉就行了。

擴充套件問題:編寫乙個函式,給定乙個鍊錶的頭指標,要求只遍歷一次,將單鏈表中的元素順序反轉過來。

解法:設定三個指標:prev,curr,next,分別指向前一節點,當前節點和下乙個節點,不斷得將當前節點的.next指標指向其前乙個節點,然後遍歷整個鍊錶,重複這個操作,最後將頭結點的.next指標設定成空即可。

**:

#includeusing namespace std;

struct node

};void deletenode(node *curr)

node * reverse(node *head)

head->next=null;

node *result=prev;

return result;

}int main()

node *reverseresult=reverse(list);

system("pause");

return 0;

}

3 4 從無頭鍊錶中刪除節點

假設有乙個沒有頭指標的單鏈表,乙個指標指向中間的乙個節點,不是第乙個節點,也不是最後乙個節點,刪除該節點 給你乙個鍊錶,只遍歷一次,在原地翻轉鍊錶 class test public static void main string args 從無頭節點單鏈表中刪除節點 public void del...

從無頭單鏈表中刪除節點

題目 在乙個給定的單向鍊錶中,如何遍歷一次刪除特定的節點 解法 這是乙個典型的逆向思維問題,正常的刪除需要把當前節點的前面節點和後面節點鏈結起來,再刪除當前節點,完成任務。當前節點的後續節點比較容易得到,但困難的是無法得到當前節點的前面節點,逆向思維的結果是不刪除當前節點,而是將後面節點的資料拷貝到...

從無頭單鏈表中刪除節點

刪除無頭單鏈表 程式實現很簡單,主要是思路如果打不開的話,就無從下手。如果是帶有頭節點的鍊錶,直接從頭部遍歷,找到需要刪除的節點,然後直接刪除 刪除的方式,加入目前的節點為node 前乙個節點即為pre pre next node next delete node node null 但是目前沒有頭...