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

线性表

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

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


疑惑

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

顺序表

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

静态

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

动态

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

举一个生活中的例子:

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

实现顺序表

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

链表

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

逻辑结构

他们就像是被一条链条拴在一起
如图所示
在这里插入图片描述

物理结构

上个元素存着下一个元素的地址通过地址可以找到他
在这里插入图片描述


链表的种类

  • 他种类繁多
  • 八种
  • 常用的就是单链表双向带头链表
  • 由图所示
    在这里插入图片描述

简单介绍各种链表

  • 如图所示
    在这里插入图片描述

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

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

链表/顺序表的优缺点

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

链表/顺序表oj

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

end

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

Supongo que te gusta

Origin blog.csdn.net/Legwhite/article/details/119530955
Recomendado
Clasificación