数据结构 顺序表与链表 四部曲总汇
Posted 一个正直的男孩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构 顺序表与链表 四部曲总汇相关的知识,希望对你有一定的参考价值。
线性表
- 开篇前先了解一下什么是
线性表
线性表是最简单的数据结构,是一些相同特征的元素的
有限序列
,在逻辑结构上每个元素就像被一条线串联
起来,物理结构,则是每个元素在计算机中的联系
疑惑
- 开篇前请带着一下几个疑惑看文章
- 顺序表的优点与缺点
- 链表的优点与缺点
- 他们的区别
顺序表
- 顺序表他是由多个相同性质的元素组成,通常是用数组来实现的
- 如图所示
- 顺序表一般有俩种
-
- 静态
-
- 动态
静态
静态就是创建好之后就能
随意改变
大小,开大了会造成浪费,开小了又不够,改变也只能从源头改变,非常局限
动态
动态则是
需要的时候申请一块(
由malloc,calloc,realloc动态申请开辟的),开大减少了浪费,开小不够的尴尬场面,
举一个生活中的例子:
- 静态就好比是你花钱去买一个储物间一样,多少钱就买都大空间
- 动态就好比给你一块地和铁铲,你要放多少东西,就造多大的储物室
实现顺序表
- 在这个期间他的优缺的会被无限的放大
- 他们都基于动态基础上
- 请看我写的另篇实现顺序表
链表
- 链表是是逻辑上连续存放每个元素就像被
链条穿插在一起
,但是物理啊结构上非连续,前面的元素存着下一个元素的地中
,(我称他为羁绊表)
逻辑结构
他们就像是被一条链条拴在一起
如图所示
物理结构
上个元素存着下一个元素的地址通过地址可以找到他
链表的种类
- 他种类繁多
- 有
八种
- 常用的就是
单链表
和双向带头链表
- 由图所示
简单介绍各种链表
- 如图所示
实现单向不循环链表/ 实现带头双向循环链表
单向不循环链表/ 实现带头双向循环链表
- 他们的优势是啥?
- 劣势又是啥?
- 带着疑惑看着篇链表曲二,三
链表/顺序表的优缺点
- 顺序表的尾插效率高,销毁也快,但是
头插
,任意位置效率低
,会造成一定空间浪费
- 单链表的尾插与头插效率高,但是他有一个劣势就是他找不到前一个但是销毁一般
效率O(N)
,需要的时候申请
- 双向带头循环链表,可以说是单链表的优化版,但是他实现起来也是
比单链表复杂
,可以找到前面的节点
,但是依然销毁没有顺序表那样效率高
不同 | 顺序表 | 链表 |
---|---|---|
存储空间上 | 物理上联系 | 逻辑上连续 |
随机访问 | 支持:O(1) | 不支持 |
任意位置插入或者删除元素 | 挪动数据,覆盖 | 修改指针指向 |
插入 | 插入不够扩容一块空间 | 想插入时申请一块 |
应用场景 | 频繁访问+元素高效储存 | 任意位置插入+删除 |
缓存利用率 | 高 | 低 |
链表/顺序表oj
- 曲四是升华篇,他们都基于增删查改的基础上
- 曲四
end
以上是关于数据结构 顺序表与链表 四部曲总汇的主要内容,如果未能解决你的问题,请参考以下文章