数据结构与算法 第二章线性表笔记

文字很多建议直接思维导图食用(第一章绪论请看上一篇)
在这里插入图片描述

线性表

逻辑结构→映射→ 存储结构
线性表→顺序表、链表

线性表的定义

由n(n>=0)个数据元素(结点)组成的有限序列

线性表的逻辑特征

有且只有一个开始结点(开始结点没有直接前驱但有且只有一个直接后继);有且只有一个终端结点(终端结点没有直接后继但有且只有一个直接前驱);其余结点有且只有一个直接前驱一个直接后继,线性表是一种典型的线性结构。

形参实参知识扩充

传递引用与传递指针效果一样,形参变化实参也会发生变化
引用类型做形参,没有在内存中产生实参的副本(一般变量会产生副本),直接对实参操作。当参数传递的数据量较大时,引用传递的时间和空间效率会更好。
指针类型做形参虽能达到使用引用的效果,但在被调函数中需重复使用“指针变量名”来进行运算,容易产生错误可读性也不高;在主调函数的调用点处,必须用变量的地址作为实参。

顺序表

顺序存储结构定义:逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构
线性表的顺序存储结构占用一片连续的存储空间,知道某个元素的存储位置就可以计算其他元素的存储位置。
线性表的顺序表示又称顺序映像或顺序存储结构
顺序表(地址连续、依次存放、随机存取、类型相同)→数组
优点:1、存储密度大(结点数据本身所占存储量/结点所占存储空间总量)2、可以随机存取表中任一元素
缺点:1、插入和删除,需移动大量的元素2、浪费存储空间3、静态存储,数据元素的个数不能自由扩充
特点:1、顺序表利用数据元素的存储位置表示线性表中数据元素间的前后关系即线性表的逻辑结构与存储结构一致。2、随机存取,通过数组下标可以随机存取表中任一数据元素

链表

链式存储结构定义:结点在存储器中的位置是任意的,即逻辑上相邻的数据元素物理上不一定相邻。
线性表的链式存储结构用一组物理位置任意的存储单元(可以是连续也可以是不连续)来存放线性表的数据元素,链表
线性表的链式表示又称非顺序映像或链式映像
链表中元素的逻辑次序和物理次序不一定相同
优点:1、结点空间可以动态申请和释放2、插入和删除时不需要移动数据元素
缺点:1、存储密度小,每个结点的指针域需额外占用存储空间,当数据域所占字节不多时,指针域所占存储空间比重显得很大2、非随机存取,查找数据需要从头指针依次向后扫描。
特点:1、结点存储位置是任意的,逻辑上相邻的数据元素在物理上不一定相邻2、访问时只能通过头指针进入链表并通过每个结点的指针域依次向后顺序扫描

不同链表的时间复杂度

带头结点的单链表:查找首元结点O(1);查找尾结点O(n);无法找到直接前驱
带头结点仅设头指针的循环单链表:查找首元结点O(1);查找尾结点O(n);直接前驱O(n)
带头结点仅设尾指针的循环单链表:查找首元结点O(1);查找尾结点O(1);直接前驱O(n)
带头结点的双向循环链表:查找首元结点O(1);查找尾结点O(1);直接前驱O(1)
单链表是由表头唯一确定,因此可以用头指针的名字来命名。

顺序表和链表的比较

存储空间:顺序表预先分配,易导致空间闲置或溢出现象;链表动态分配

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值