首页 > 其他分享 >203. 移除链表元素

203. 移除链表元素

时间:2023-03-26 23:23:04浏览次数:54  
标签:pre 203 ListNode val nullptr head next 链表 移除

c++解法

解法1:先确定头节点,而后移动指针

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        while(head != nullptr && head->val == val) head = head->next;
        if(head == nullptr) return nullptr;

        ListNode* pre = head;
        while(pre->next != nullptr){
            if(pre->next->val == val) pre->next = pre->next->next;
            else pre = pre->next;
        }
        return head;
    }
};

解法2:虚拟头节点

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
       ListNode* dummy = new ListNode(-1);//虚拟头节点,val值随便赋
       dummy ->next = head;
       ListNode *pre = dummy;
       while(pre->next != nullptr){
           if(pre->next->val == val) pre->next = pre->next->next;
           else pre = pre->next;
       }
       return dummy->next;
    }
};

 

标签:pre,203,ListNode,val,nullptr,head,next,链表,移除
From: https://www.cnblogs.com/luxiayuai/p/17259926.html

相关文章

  • LeetCode 142.环形链表II
    力扣LeetCode142.环形链表II题目跳转链接解题思路:代码随想录:142.环形链表II从头结点出发一个指针,从相遇节点也出发一个指针,这两个指针每次只走一个节点,那么当这......
  • 数据结构-->单链表OJ题--->讲解_03
    老铁们,现在开讲啦!!下面是本期的OJ试题:>1.给定一个带有头结点head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。现列图式样所示:>上图只有一......
  • 24. 两两交换链表中的节点——学习笔记
    题目:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。示例1:输入:head=[1,2,3,4]输......
  • 206.反转链表——学习笔记
    题目:给你单链表的头节点head,请你反转链表,并返回反转后的链表。示例1:输入:head=[1,2,3,4,5]输出:[5,4,3,2,1]示例2:输入:head=[1,2]输出:[2,1]示例3:输入:hea......
  • 707.设计链表——学习笔记
    题目:你可以选择使用单链表或者双链表,设计并实现自己的链表。单链表中的节点应该具备两个属性:val和next。val是当前节点的值,next是指向下一个节点的指针/引用。如果......
  • 142.环形链表II——学习笔记
    题目:给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表无环,则返回null。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。......
  • 面试题 02.07. 链表相交——学习笔记
    题目:给你两个单链表的头节点headA和headB,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回null。图示两个链表在节点c1开始相交:题目数据保......
  • 19.删除链表的倒数第N个节点——学习笔记
    题目:给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点示例1:输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]示例2:输入:head=[1],n=1输出:[]示例3:......
  • 2023-03-25 单链表LinkList的基本操作
    1#include<stdio.h>2#include<stdbool.h>3#include<malloc.h>4typedefstructLNode5{6intdata;7structLNode*next;8}LNod......
  • Josephu问题与单向环形链表
    Josephu问题与单向环形链表1.什么是约瑟夫问题(Josephu)Josephu问题的设定为:假设编号为1,2,...,n的n个人围坐成一圈,从编号为k(1≤k≤n)的人开始报数,当报至m时报m的这个人出......