代码训练营 Day3 | 链表01

本文比较了数组和链表在定义、长度和动态操作上的区别,介绍了链表的基本构造(Java和Python实现),以及如何在链表中移除节点,特别提到了使用虚拟头节点简化删除操作的方法。
摘要由CSDN通过智能技术生成

学链表了,好不熟悉好难啊感觉,先把链表和数组做一个对比吧

链表-链表与数据性能对比

 

数组在定义的时候,长度就是固定的,如果想改动数组的长度,就需要重新定义一个新的数组。

链表的长度可以是不固定的,并且可以动态增删, 适合数据量不固定,频繁增删,较少查询的场景。

链表的构造:

JAVA

public class ListNode {
    // 结点的值
    int val;

    // 下一个结点
    ListNode next;

    // 节点的构造函数(无参)
    public ListNode() {
    }

    // 节点的构造函数(有一个参数)
    public ListNode(int val) {
        this.val = val;
    }

    // 节点的构造函数(有两个参数)
    public ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}

Python

class ListNode:
    def __init__(self, val, next=None):
        self.val = val
        self.next = next

​​​​​​203. 移除链表元素

删除链表节点要分,如果是第一个链表节点,那就不好删,如果中间的节点,就要让前一个的next指向后后一个节点的head以此跳过中间的节点。所以如果是普通的删除方法,就要进行一个判断看看是不是头节点。

有没有不用判断的方法呢?===> 虚拟头节点

注意⚠️如果我们要删除一个元素1 -- > 2 --> 3例如我们要删除2,我们一定要知道上一个节点指的是什么,也就是1

删除的操作为:current = current.next.next

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值