链表_LeetCode_237_删除链表节点

原题:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点

法一:官方做法

使给定节点node的值等于下一节点node->next的值,再用常规操作将node->next删除。即实际上删除的不是给定节点,而是做了一个代换。

void deleteNode(struct ListNode* node) {
    node->val=node->next->val;
    node->next=node->next->next;
}

法二:

node和其前一节点的next指向同一地址,即可以等价,故直接对node进行修改即可。

class Solution {
public:
    void deleteNode(ListNode* node) {
        *node = *(node->next);
    }
};

/*作者:akari-5
链接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list/solution/chuan-tong-cyu-yan-lian-biao-yu-mian-xiang-dui-xia/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*/

 

posted @ 2020-03-24 17:11  Ruanzy  阅读(64)  评论(0)    收藏  举报