初级线性表
1|0初级线性表
1|1vector
v.resize(n,m)
重新调整数组大小为
vector<int> a(n + 1)
初始化。
- 优势
- 高效存储与查询,复杂度
- 高效存储与查询,复杂度
- 劣势
- 移位操作
- 在任意位置插入删除若干数据
- 搜索指定元素
- 无序下
- 复杂度可达
- 移位操作
1|2stack
- 手写栈
-
STL
s.push(a)
s.pop()
- ...同理
-
栈模拟递归
-
递归
-
-
栈模拟
-
-
- 适用于后进先出,先进后出的过程。
1|3queue
- 手写队列
STL
q.push(a
)- ...
q.front()
q.back()
- ...
- P1996 约瑟夫问题
- 适用于先进先出的过程,如
BFS
.
1|4list
-
即通过记录每个元素的下一个元素是谁来实现存储元素排列顺序的表
-
排队例子
-
每个人以
next
数组记录下一个人是谁。 -
插队
-
如果以数组实现,要把插队后的元素都后移一位,
-
链表实现只需在
next
上面做文章即可。-
如
y
插到x
后面 -
-
-
-
退队
-
数组老样子要把后面元素都往前移。
-
链表实现只需在
next
上面做文章即可。-
删除
x
后面的那位同学 -
-
可是无法直接删除
x
,因为不知道x
前面的元素。- 通过双链表,再开一个数组,记录一个元素后面的元素。
-
-
-
-
链表分类
- 单链表
- 每个结点记录自己的后继
- 双链表
- 每个结点记录自己的前驱和后继
- 循环单链表
- 最后一个结点的后继是第一个结点的单链表,形成环形结构。
- 循环双链表
- 块状链表
- 将若干元素分块,串联块
- 跳表
- 相当于平衡树。每个结点有自己的右指针和下指针,通过分层的方式加速查询,而每个元素的层数由概率决定。
- 单链表
-
手写双链表
-
P2234 [HNOI2002] 营业额统计
灵活运用手写链表的好处。 -
STL
int arr[100] = {1, 2, 3}; list<int> a(arr, arr + 3)
- 从
arr
中选前三个元素作为list
的初始值
- 从
list<int>::iterator it;
it++;it--;
a.push_front(x);a.push_back(x)
a.insert(it, x)
a.pop_front();a.pop_back()
a.erase(it)
for (it = a.begin(); it != a.end(); it++)
-
优势
- 插入、删除等操作快
-
劣势
- 查询慢,麻烦。
__EOF__

本文作者:Kdlyh
本文链接:https://www.cnblogs.com/kdlyh/p/17846326.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/kdlyh/p/17846326.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具