力扣:237. 删除链表中的节点

wuchangjian2021-11-11 09:41:01编程学习

1、既然不能直接删掉该结点,那便将其后面的值传上来,删掉后面的结点

/**
 * 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) {
        while(node->next->next!=NULL)
        {
            node->val=node->next->val;
            node=node->next;
        }
        node->val=node->next->val;
        node->next=NULL;
    }
};

 2、稍作优化,其实没必要全部往前移,只要把要删除结点的后一位往前移即可。

/**
 * 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) {
        node->val=node->next->val;
        node->next=node->next->next;
    }
};

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。