数据结构之线性表

一、顺序存储

1、顺序表:线性表的顺序存储又称顺序表。它是用一组连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素物理位置上也相邻。
(1)顺序表的基本操作
数据结构之线性表_第1张图片
(2)顺序表的存储类型
在这里插入图片描述
(3)顺序表的特点:随机访问,存储密度高,插入和删除操作需要移动大量元素。

2、顺序表的实现
(1)插入操作:平均复杂度为:O(n)
数据结构之线性表_第2张图片
(2)删除操作:平均复杂度为:O(n)
数据结构之线性表_第3张图片在这里插入图片描述
(3)按值查找(顺序查找):平均复杂度为:O(n)
数据结构之线性表_第4张图片
(4)顺序表的插入和删除
数据结构之线性表_第5张图片

二、链式存储

1、单链表:线性表的链式存储又称单链表,它是指通过任意的存储单元来存储线性表中的数据元素。
(1)单链表的结构
在这里插入图片描述
带头结点的单链表,头节点内通常不存储任何信息,也可以存储表长信息等。头指针指向链表的第一个结点,头结点是带头结点的链表中的第一个结点。

在这里插入图片描述
(2)单链表的存储类型
在这里插入图片描述
(3)单链表的实现

  1. 头插法建立单链表:读入数据的顺序与生成的链表中的元素的顺序是相反的。(逆序)
    数据结构之线性表_第6张图片
  2. 尾插法建立单链表
    数据结构之线性表_第7张图片数据结构之线性表_第8张图片
  3. 按序号查找结点值:从第一个结点出发,顺序搜索,直到查找到第i个结点。
    数据结构之线性表_第9张图片
  4. 按值查找表结点:从第一个结点开始,依次比较数据元素的值,找到则返回,否则返回null。
    数据结构之线性表_第10张图片
  5. 插入结点操作:先查找插入的位置,再进行插入操作。数据结构之线性表_第11张图片
  6. 删除结点操作:先查找要删除的结点,再进行删除操作。
    数据结构之线性表_第12张图片
    在这里插入图片描述
  7. 求表长操作:从第一个结点开始遍历,设置一个计数器变量。

2、双链表
(1)双链表结构
在这里插入图片描述
(2)双链表结点类型
在这里插入图片描述
(3)双链表的实现

  1. 双链表的插入操作
    数据结构之线性表_第13张图片
    第一步和第二步必须在第四步之前,否则就会丢失指针,插入失败。
  2. 双链表的删除操作
    数据结构之线性表_第14张图片

3、循环链表
(1)循环单链表
循环链表和单链表的区别在于,表中最后一个结点的指针不是null,而改为指向头结点,从而形成一个环。在任何一个位置上的插入和删除操作都是等价的,无须判断是否是表尾。
r->next=L;
在这里插入图片描述
(2)循环双链表
在这里插入图片描述
4、静态链表
静态链表借助数组来描述线性表的链式存储结构,结点也有数据域data和指针域next,这里的指针是结点的相对地址(数组下标)。和顺序表一样,静态链表也要预先分配一块连续的内存空间。
数据结构之线性表_第15张图片

三、线性表总结

线性表是n个数据特性相同的元素的组成有限序列,是最基本且常用的一种线性结构(线性表,栈,队列,串和数组都是线性结构),同时也是其他数据结构的基础。

你可能感兴趣的:(数据结构,线性表)