刪除鏈表中的節(jié)點

請編寫一個函數(shù),使其可以刪除某個鏈表中給定的(非末尾)節(jié)點,你將只被給定要求被刪除的節(jié)點。 現(xiàn)有一個鏈表 --?head =?[4,5,1,9]。??

示例 1: 輸入: head = [4,5,1,9], node = 5 輸出: [4,1,9]

解釋: 給定你鏈表中值為?5?的第二個節(jié)點,那么在調(diào)用了你的函數(shù)之后,該鏈表應變?yōu)?4 -> 1 -> 9.

示例 2: 輸入: head = [4,5,1,9], node = 1 輸出: [4,5,9]

解釋: 給定你鏈表中值為?1?的第三個節(jié)點,那么在調(diào)用了你的函數(shù)之后,該鏈表應變?yōu)?4 -> 5 -> 9.??

這題很雞賊,我一開始沒有看懂題目,無腦遍歷才發(fā)現(xiàn)并沒有給出head,只給了一個node節(jié)點。

和習慣的那種先找pre節(jié)點的思路就很不一樣。


常規(guī)思路

看了題解就兩行代碼,蛤蛤。非常規(guī)思維。

做法就是做一個拷貝,把node->next的數(shù)據(jù)域、指針域統(tǒng)統(tǒng)都給node,這樣node就變成node->next了,而node的指針域繼承了node->next的指針域部分,也就能很順地接下去了。


兩行代碼:

node->val=node->next->val;????????

node->next=node->next->next;

不過我感覺只是改node的話,node->next雖然沒有利用價值了,但也一直在那邊沒有釋放掉啊喂,然后我稍微做了點沒用的改動:

ListNode?*ptemp=node->next;????????

node->val=node->next->val;????????

node->next=node->next->next;????????

delete?ptemp;

這樣就安心多了。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容