第二章-线性表

线性表的定义和基本操作

线性表的特点:
  1. 表中元素个数是有限的。
  2. 表中元素具有逻辑上的顺序性,表中元素有其先后次序。
  3. 表中元素都是数据元素,每个元素都是单个元素。
  4. 表中元素的数据类型都相同,这意味着每个元素占有相同大小的存储空间。
  5. 线性表是逻辑结构,具有抽象性。
线性表的基本操作:

需要自己动手去写!!!

线性表的存储结构

顺序存储

1.线性表的顺序存储结构是一种随机存取的存储结构。

2.线性表的顺序存储结构的一维数组可以是静态分配的,也可以是动态分配的。

基本操作
  1. 插(按值查找和按位查找)
线性表的链式存储
单链表

1.线性表的链式存储又称单链表。

2.单链表是非随机存取的存储结构。查找某个特定的节点时,需要从表头开始遍历,依次查找。

3.通常用一个头指针来标识一个单链表。

4.为了操作上的方便,通常在单链表的第一个节点前附加一个节点,称为头节点。头节点的数据域可以不设任何信息,也可以记录表长等信息。头节点的指针域指向线性表的第一个元素节点。

建立单链表
  1. 头插法建立单链表

    该方法从一个空表开始

    生成新的节点

    并将读取到的数据存放到新节点的数据域中

    然后将新节点插入到当前链表的表头,即头节点之后

    ==注:==采用头插法建立单链表时,读取数据的顺序与生成的链表中的顺序是相反的。

  2. 尾插法建立单链表

    该方法将新节点插入到当前链表的表尾,为此必须增加一个尾指针r,使其始终指向当前链表的尾节点。

其他操作
  • 按值查找
  • 按序号查找
  • 插入节点
    1. 检查插入位置的合法性
    2. 找到插入位置的前驱节点
    3. 在其后插入节点
  • 删除节点
    1. 检查删除位置的合法性
    2. 找到待删除位置的前驱节点
    3. 删除节点
  • 求表长
双链表

1.双链表相对于单链表新增了指向前驱节点的指针。

2.双链表在插入和删除操作上和单链表有很大不同。

循环链表
  1. 循环单链表

    1.循环单链表和单链表的区别在于,表中最后一个节点的指针不是NULL,而改为指向头节点。

    2.循环单链表的判空条件不是头节点的指针是否为空,而是它是否等于头指针。

    3.有时对单链表常做的操作时在表头和表尾进行的,所以对循环单链表不仅设置头指针,而且设置尾指针,如此,对表头和表尾进行操作都只需要O(1)的时间复杂度。

  2. 循环双链表

    和循环单链表不同的是,头节点的prior指针要指向表尾节点。

静态链表

1.静态链表借助数组来表述线性表的链式存储结构

2.节点有指针域、数据域。指针域中是节点的相对地址(数组下标)。

3.静态链表也需要预先分配一块连续的存储空间

4.以指针域next == -1 作为其结束的标志。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值