uacs2024

导航

leetcode237-删除链表中的节点

237. 删除链表中的节点

 

方法一:不断赋值,最后的那个指向NULL。这种方法有点想数组插入,没有充分利用链表的性质

/**
 * 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 *p=node;
        while(p->next)
        {
            ListNode *q=p->next;
            p->val=q->val;
            if(q->next==NULL)   break;
            p=p->next;
        }
        p->next=NULL;
    }
};

方法二:自己变成儿子的模样,然后把儿子的位置传给孙子

/**
 * 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;
    }
};

 

posted on 2022-09-16 18:19  ᶜʸᵃⁿ  阅读(12)  评论(0编辑  收藏  举报