题目描述:
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.
就是说,没有给头结点,而是直接给出了要删除的结点(不是尾结点),要求删除那个结点。
解题思路:就是把要删除节点的后一个结点值复制到要删除节点上,然后删除后一个结点。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void deleteNode(ListNode* node) {
if(node==NULL) return;
ListNode* nextnode=node->next;
node->val=nextnode->val;
if(nextnode->next==NULL) node->next=NULL;
else node->next=nextnode->next;
return;
}
};