劍指offer 18 刪除鍊錶的節點 C

2021-10-06 05:22:58 字數 706 閱讀 6997

題目描述

在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。 例如,鍊錶1->2->3->3->4->4->5 處理後為 1->2->5

思路1:非遞迴

1、新建乙個頭節點,防止被刪除節點位於頭節點;

2、定義兩個指標,pre用於指向不重複的節點,last用於判斷重複的節點

/*

struct listnode

};*/

class

solution

pre-

>next=last-

>next;

last=last-

>next;

}else

}return head-

>next;

//【注:文中未delete記憶體釋放】}}

;

思路2:遞迴

class

solution

if(phead-

>val == phead-

>next-

>val)

return

deleteduplication

(node)

;// 從第乙個與當前結點不同的結點開始遞迴

}else}}

;

劍指offer18 刪除鍊錶節點

1.考慮輸入空鍊錶和乙個節點鍊錶 2.如果頭節點不重複,直接遞迴查詢重複 3.雙指標,進行判斷兩個節點是不是相等 coding utf 8 class listnode def init self,x self.val x self.next none class solution def dele...

劍指offer 18 刪除鍊錶的結點

typedef int datatype typedef struct listnode listnode 建立結點 static listnode createnode datatype data 鍊錶初始化 void listinit listnode ppfirst 鍊錶銷毀 void lis...

劍指offer 18 刪除鍊錶的節點

描述 給定單向鍊錶的頭指標和乙個要刪除的節點的值,定義乙個函式刪除該節點。返回刪除後的鍊錶的頭節點。示例 輸入 head 4,5,1,9 val 5 輸出 4,1,9 解釋 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 1 9.常規思路 定義乙個暫時變數用來刪除節點...