zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    3.24
    3.23
    构建之法读书笔记2
    寒假学习day23
    寒假学习day22
    寒假学习day21
    寒假学习day20
    寒假学习day19
    寒假学习每周总结4
    寒假学习day18
  • 原文地址:https://www.cnblogs.com/luo-c/p/12869166.html
Copyright © 2011-2022 走看看