請編寫一個函數(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ī)思維。
做法就是做一個拷貝,把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;
這樣就安心多了。