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

203. 移除链表元素

时间:2024-11-23 19:23:08浏览次数:4  
标签:203 ListNode cur val int head next 链表 移除

题目

很长时间没接触链表这种数据结构了,看到这道题有点无从下手。

看了卡哥讲解视频

特别想说的是,卡哥的视频把这个题讲的很好,有些不理解的地方,怎么思考的,卡哥讲的很清楚。

跟着卡哥代码敲了一下:

方法一:不设置虚拟头节点

/**
 * 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)
        {
            ListNode *tmp = head;
            head = head->next;
            delete tmp;
        }

        ListNode *cur = head;
        while (cur != nullptr && cur->next != nullptr)
        {
            if (cur->next->val == val)
            {
                ListNode *tmp = cur->next;
                cur->next = cur->next->next;
                delete tmp;
            }
            else 
            {
                cur = cur->next;
            }
        }
        return head;
    }
};

附上一张用于理解的图:

img

方法二:设置虚拟头节点

/**
 * 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 *dummyHead = new ListNode(0);
        dummyHead->next = head;
        ListNode *cur = dummyHead;
        while (cur->next != nullptr)
        {
            if (cur->next->val == val)
            {
                ListNode *tmp = cur->next;
                cur->next = cur->next->next;
                delete tmp;
            }
            else
            {
                cur = cur->next;
            }
        }
        head = dummyHead->next;
        delete dummyHead;
        return head;
    }
};

标签:203,ListNode,cur,val,int,head,next,链表,移除
From: https://www.cnblogs.com/hisun9/p/18564952

相关文章

  • 科普文:软件架构之Linux系列【linux内核数据结构:链表、队列、映射、二叉树】
    概叙科普文:软件架构之Linux系列【linux内核数据结构汇总】-CSDN博客Linux内核提供了许多复杂的数据结构,这些结构被广泛用于各种不同的目的,例如存储设备管理、内存管理、进程管理等。以下是一些常见的数据结构以及它们的简要描述:双向链表(list):实现链表的数据结构,每个节点都......
  • [数据结构笔记]从头插入链表的代码实现
    #仅供个人纪录#小白笔记细致慎入回顾思路:链表实现从头插入需要:结构体头结点结构体指针变量 实现功能的函数主函数(当然)结构体包含:data和指向下一个结构体的指针structNode{intdata;structNode*next;//c++写法可以直接Node*next;};//注意别漏掉;结构指针......
  • 小视频代码,反转链表的实现思路分析
    小视频代码,反转链表的实现思路分析//思路一://使用指针publicListNodeReverseList(ListNodehead){if(head==null||head.next==null){returnhead;}ListNodepre=null;ListNodecur=head;while(cur!=null){ListNodenext=......
  • 小视频平台源码,删除链表中重复的结点应该这样做
    小视频平台源码,删除链表中重复的结点应该这样做//思路://1->2->2->3//删除重复元素后1->3//1->2->2//删除重复元素后1publicListNodedeleteDuplication(ListNodepHead){if(pHead==null||pHead.next==null){returnpHead;}//设置虚拟头结点......
  • 初阶数据结构【3】--单链表(比顺序表还好的一种数据结构!!!)
    本章概述前情回顾单链表实现单链表彩蛋时刻!!!前情回顾咱们在上一章博客点击:《顺序表》的末尾,提出了一个问题,讲出了顺序表的缺点——有点浪费空间。所以,为了解决这个问题,我们今天就要讲解链表,咱们在讲结构体的时候有提到过链表,链表的最大优点——一点空间也不浪费,用多少......
  • [数据结构] 删除单链表中最小值结点(C语言版本)
    如果对单链表基本操作或概念不理解的可以跳转:单链表的基本操作(C语言版)-CSDN博客https://blog.csdn.net/m0_74181956/article/details/143082621?spm=1001.2014.3001.5501算法思想:如图所示:定义指针p为L的第一个结点,pre为L的头结点,min为记录每次遍历的最小值结点,minpre为记......
  • 数据结构 链表 C语言
    数据结构第二章的链表//线性表的链式存储#include<stdlib.h>#include<stdio.h>typedefintElemType;typedefstructnode{ElemTypedata;structnode*next;}Node,*LinkList;//初始化空的单链表voidInitList(LinkList*L){*L=(LinkLis......
  • 【算法】将单向链表按某值分成左边小、中间相等、右边大的形式
    前置知识数据结构:链表测试链接:链表划分本题考察对链表coding速度的熟练度。也考察读者对链表分块的处理,另外,透过此题可以窥探链表快速排序的实现。题目给定一个单向链表的头节点head,节点的值是int类型。给定任意整数pivot。实现这样一个函数。将原链表调整为......
  • 83. 删除排序链表中的重复元素 线性法&快慢双指针
    83.删除排序链表中的重复元素给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。示例1:输入:head=[1,1,2]输出:[1,2]示例2:输入:head=[1,1,2,3,3]输出:[1,2,3]提示:链表中节点数目在范围 [0,300] 内-100<=......
  • 力扣面试题02.07.链表相交
    题目链接:面试题02.07.链表相交-力扣(LeetCode)给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果......