Categories
不学无术

LeetCode #237. Delete Node in a Linked List

题目:https://leetcode.com/problems/delete-node-in-a-linked-list/
思路:
因为只给要删去节点的指针,所以就要想点歪办法。
假设我们有节点1,2,3,【4】,5,6,要删去4这个点,那其实只要把后序节点5的值复制给4,然后我们可以把后面原来那个5删掉,把原有的4节点链到6就行了~大致意思就是,通过往前复制一个值,构造出一个新的“4”的前序节点。

使用前:1,2,3,[4],5,6
拷贝值:1,2,3,5,[5],6
删去多于节点(将新的5节点链接到拷贝的5右边的6,删去老的5节点):1,2,3,5,6

代码:

/**
 * 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) {
        ListNode* nextNode = node->next;
        node->val = nextNode->val; //Copy value
        ListNode* thirdNode = nextNode->next;
        node->next = thirdNode;
        delete nextNode;
    }
};

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.