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’链表与数组的比较
数组在定义的时候,长度就是固定的,如果想改动数组的长度,就需要重新定义一个新的数组。
链表的长度可以是不固定的,并且可以动态增删, 适合数据量不固定,频繁增删,较少查询的场景。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报