题目:
Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.
Supposed the linked list is 1 -> 2 -> 3 -> 4
and you are given the third node with value 3
, the linked list should become 1 -> 2 -> 4
after calling your function.
解析:
首先题目给出要删除的节点不是最后一个节点,省去了处理最后一个节点的情况。与一般删除链表节点不同的是,这个题目直接给出要删除的节点,故直接用下一个节点替换要删除的节点即可
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 class Solution { 10 public: 11 void deleteNode(ListNode* node) { 12 node -> val = node -> next ->val; 13 node -> next = node -> next -> next; 14 } 15 };