数据结构 顺序表与链表 四部曲总汇

Posted 一个正直的男孩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构 顺序表与链表 四部曲总汇相关的知识,希望对你有一定的参考价值。

线性表

  • 开篇前先了解一下什么是线性表

线性表是最简单的数据结构,是一些相同特征的元素的有限序列,在逻辑结构上每个元素就像被一条线串联起来,物理结构,则是每个元素在计算机中的联系


疑惑

  • 开篇前请带着一下几个疑惑看文章
  1. 顺序表的优点与缺点
  2. 链表的优点与缺点
  3. 他们的区别

顺序表

  • 顺序表他是由多个相同性质的元素组成,通常是用数组来实现的
  • 如图所示
  • 顺序表一般有俩种
    1. 静态
    1. 动态

静态

静态就是创建好之后就能随意改变大小,开大了会造成浪费,开小了又不够,改变也只能从源头改变,非常局限

动态

动态则是需要的时候申请一块(由malloc,calloc,realloc动态申请开辟的),开大减少了浪费,开小不够的尴尬场面,

举一个生活中的例子:

  • 静态就好比是你花钱去买一个储物间一样,多少钱就买都大空间
  • 动态就好比给你一块地和铁铲,你要放多少东西,就造多大的储物室

实现顺序表

  • 在这个期间他的优缺的会被无限的放大
  • 他们都基于动态基础上
  • 请看我写的另篇实现顺序表

链表

  • 链表是是逻辑上连续存放每个元素就像被链条穿插在一起,但是物理啊结构上非连续,前面的元素存着下一个元素的地中,(我称他为羁绊表)

逻辑结构

他们就像是被一条链条拴在一起
如图所示

物理结构

上个元素存着下一个元素的地址通过地址可以找到他


链表的种类

  • 他种类繁多
  • 八种
  • 常用的就是单链表双向带头链表
  • 由图所示

简单介绍各种链表

  • 如图所示

实现单向不循环链表/ 实现带头双向循环链表

单向不循环链表/ 实现带头双向循环链表

链表/顺序表的优缺点

  • 顺序表的尾插效率高,销毁也快,但是头插任意位置效率低,会造成一定空间浪费
  • 单链表的尾插与头插效率高,但是他有一个劣势就是他找不到前一个但是销毁一般 效率O(N)需要的时候申请
  • 双向带头循环链表,可以说是单链表的优化版,但是他实现起来也是比单链表复杂,可以找到前面的节点,但是依然销毁没有顺序表那样效率高
不同顺序表链表
存储空间上物理上联系逻辑上连续
随机访问支持:O(1)不支持
任意位置插入或者删除元素挪动数据,覆盖修改指针指向
插入插入不够扩容一块空间想插入时申请一块
应用场景频繁访问+元素高效储存任意位置插入+删除
缓存利用率

链表/顺序表oj

  • 曲四是升华篇,他们都基于增删查改的基础上
  • 曲四

end

  • 相信经过上面的层层洗礼你已经对链表顺序表又一个深刻的见解了(记得看他们的实现方法,点跳转链接即可实现顺序表链表曲二,三,)
  • 但是革命的大军依旧没有停止,多去leetcode刷题哟,加深记忆不说了leetcode向我招手呢

以上是关于数据结构 顺序表与链表 四部曲总汇的主要内容,如果未能解决你的问题,请参考以下文章

顺序表与链表

《数据结构》顺序表与链表

顺序表与链表的基本操作

区别顺序表与链表 自我总结

数据结构-线性表(顺序表与链表的基本知识 以及ArrayList 源码分析)

数组与链表的区别