• 203. Remove Linked List Elements


    给定一个链表和一个整数,要求删除链表上值为给定整数的节点。
    Input: 1->2->6->3->4->5->6, val = 6
    Output: 1->2->3->4->5

    思路:对给定链表循环,如果节点上的值等于给定的val,则跳过,否则将其加入到新链表上。
    难点:当最后一个节点要去除时,由于它值等于val,我们可能会不管它,而他之前的节点会指向他,将他带回,所以,解决办法是,当其等于val时,就让新链表的->next= nullptr.

    #include<iostream>
    using namespace std;
    struct ListNode {
        int val;
        ListNode* next;
        ListNode(int x):val(x),next(nullptr){}
    };
    ListNode* removeElement(ListNode* head, int val) {
        if (!head) return head;
        ListNode* p = new ListNode(-1);
        ListNode* tmp_p = p;
        while (head) {
            if (head->val != val) {
                tmp_p->next = head;
                tmp_p = tmp_p->next;
            }
            else {
                tmp_p->next = nullptr;
            }
            head = head->next;
        }
        return p->next;
    }
    
    int main() {
        ListNode a = ListNode(1);
        ListNode b = ListNode(2);
        ListNode c = ListNode(6);
        ListNode d = ListNode(3);
        ListNode e = ListNode(4);
        ListNode f = ListNode(5);
        ListNode g = ListNode(6);
        a.next = &b;
        b.next = &c;
        c.next = &d;
        d.next = &e;
        e.next = &f;
        f.next = &g;
        ListNode* p = removeElement(&a, 6);
        while (p) {
            cout << p->val<<endl;
            p = p->next;
        }
        return 0;
    }
  • 相关阅读:
    python闯关_Day012
    python闯关_Day010
    python闯关_Day009
    python闯关_Day008
    python闯关_Day07
    什么是PRD、MRD与BRD?
    Python中logging日志使用
    git一些常用的命令
    Python第三方库
    FastDFS分布式存储服务器安装
  • 原文地址:https://www.cnblogs.com/luo-c/p/12869166.html
Copyright © 2020-2023  润新知