2024/11/24 链表

链表

1.类型

(1)单链表

(2)双链表

(3)循环链表

2.链表在内存的存储方式

  数组是在内存中是连续分布的,但是链表在内存中可不是连续分布的,而是散乱分布在内存中的某地址上,分配机制取决于操作系统的内存管理。

  链表是通过指针域的指针链接在内存中各个节点。

3.链表的定义

  定义链表节点方式

Python:

1
2
3
4
class ListNode:
    def __init__(self, val, next=None):
            self.val = val
            self.next = next

C++

1
2
3
4
5
6
//单链表
struct ListNode{
    int val; //节点上存储的元素
    ListNode *next; //指向下一个节点的指针
    ListNode(int x) : val(x), next(NULL) {} //节点的构造函数
};

  

4.链表的操作

(1)删除节点

  删除节点后,C++中最后再手动释放该节点,从而释放这块内容。

  Java语言,Python语言,有自己的内存回收机制,不需要手动释放。

  链表的增添和删除都是O(1)操作,但是删除最后一个节点,时间复杂度是O(n)

(2)增加节点

4’链表与数组的比较

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

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

 

posted @   axuu  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示