数据结构(四)

1.链表是什么玩意?
有单向链表和双向链表之分
定义:物理上非连续、非顺序,由若干节点所组成
单向链表:
单向链表的一个节点由2部分组成,数据域(data)+指针域(next),数据域存放数据,指针域存放指向下一个节点的指针
头节点:链表的第一个节点
尾节点:链表的最后一个节点,next指针指向为null
双向链表:
除了包含data+next外,还有一个前置指针(prev),用来指向前一个节点
双向链表的头节点prev指向为null,尾节点next指针指向为null
链表的存储方式:
与数组做对比,数组在内存中是顺序存储。占用连续完整的存储空间,链表在内存中随机存储,见缝插针,哪有位置存哪,节点间通过指针关联起来。
2.链表的基本操作
查:
不能通过下标快速定位,只能从头节点开始不断移动指针,一个个逐一查找,时间复杂度最坏为O(n)
改:
忽略查找的过程,更新同数组一样简单,直接新数据替换旧数据,时间复杂度O(n)
增:
有3种情况
1)尾部插入
最简单,将尾部节点next指针指向新节点,新节点成为尾部节点
2)头部插入
新节点的next指针指向原来的头节点,新节点成为头节点
3)中间插入
插入位置前面节点的next指向新节点,新节点next指向插入位置后边的节点
删:
3种情况
1)头删除
将原来头节点next指向设为新的头节点
2)尾删除
将倒数第二个节点的next指针指向为null
3)中间删除
将要删除的节点的前置节点的next指针指向要删除节点的后置节点
不考虑查找过程,删除和插入时间复杂度O(1)
3.链表的应用场景
多用于写操作,插入和删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值