数据结构(2)-------- 线性表
目录
1、线性表定义
2、基本操作
3、使用顺序存储方式(数组方式)实现“线性表”(顺序表)
3.1、顺序表的插入
3.2、顺序表的删除
3.2、顺序表的查找
4、使用链式存储方式实现“线性表”(链表)
4.1、单链表
4.1.1、单链表插入
4.1.2、单链表删除(带头节点)
4.1.3、单链表查找(带头节点)
4.1.4、单链表的建立(带头节点)
4.2、双链表
4.2.1、双链表初始化(带头节点)
4.2.2、双链表插入(带头节点)
4.2.3、双链表删除(带头节点)
4.2.3、双链表遍历(带头节点)
4.3、循环链表
4.4、静态链表
5、顺序表和链表对比
1、线性表定义
具有相同数据结构类型的n(≥0)个数据元素的有限序列,其中n为表长,当n = 0时线性表是一个空表。若用L命名线性表,可表示为:
2、基本操作
3、使用顺序存储方式(数组方式)实现“线性表”(顺序表)
静态实际实现方式:
动态实际实现方式:(可变数组的实现方式)
使用顺序表的特点:
3.1、顺序表的插入
时间复杂度:
3.2、顺序表的删除
时间复杂度:
3.2、顺序表的查找
按位查找:
直接通过下标索引就行。复杂度为1。
按值查找:
注意:结构体不能直接使用 == 比较,上面只是逻辑代码;
4、使用链式存储方式实现“线性表”(链表)
4.1、单链表
每个节点除了存放数据,还有一个指向下个节点的指针。
带头节点的单链表:第一个节点不用于存放数据;(一般用这个,这样程序好写一些)
不带头节点的单链表:所有节点都可用于存放数据;
4.1.1、单链表插入
带头节点:(一般使用这种)
红色方框中确定节点位置的方式可以学习。
不带头节点:
节点的前插操作:
节点的后插操作:
4.1.2、单链表删除(带头节点)
按位删除:
指定删除:
4.1.3、单链表查找(带头节点)
按位查找:
按值查找:
求表长度:
4.1.4、单链表的建立(带头节点)
尾插法:
头插法:(插入顺序为输入数据的逆序)
4.2、双链表
4.2.1、双链表初始化(带头节点)
4.2.2、双链表插入(带头节点)
4.2.3、双链表删除(带头节点)
4.2.3、双链表遍历(带头节点)
4.3、循环链表
循环单链表:(其主要操作和单链表的操作基本一致,不用再赘述)
循环双链表:(其主要操作和双链表的操作基本一致,不用再赘述)
4.4、静态链表
分配一整片连续空间内存的链表,各个节点集中安置。所以它的最大容量是不能变的。(用的很少,操作系统的文件分配表FAT就是静态链表)
其中游标是下个节点所处数组的位置。
实现形式: