題目描述
請(qǐng)編寫一個(gè)函數(shù),使其可以刪除某個(gè)鏈表中給定的(非末尾)節(jié)點(diǎn),你將只被給定要求被刪除的節(jié)點(diǎn)。
輸入: head = [4,5,1,9], node = 5
輸出: [4,1,9]
解釋: 給定你鏈表中值為 5 的第二個(gè)節(jié)點(diǎn),那么在調(diào)用了你的函數(shù)之后,該鏈表應(yīng)變?yōu)?4 -> 1 -> 9.
思路
給我們的只有待刪除的節(jié)點(diǎn),不能遍歷。
比如 1->3->5->7->9 node 為 5
首先將 node 這個(gè)節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)的值賦到當(dāng)前節(jié)點(diǎn)。
那么鏈表就變?yōu)?1->3->7->7->9將 node 這個(gè)節(jié)點(diǎn)的 next 指針指向 next 的 next 也就是 9,鏈表變?yōu)?->3->7->9 ,那么就實(shí)現(xiàn)刪除節(jié)點(diǎn)。
class Solution {
public:
void deleteNode(ListNode* node) {
ListNode *p = node->next;
node->val = node->next->val;
node->next = node->next->next;
}
};