【数据结构】顺序表的应用

目录

一.引言        

二.顺序表概念

三.顺序表的实现

1.定义顺序表

2.顺序表初始化

​编辑

3.检查空间,如果满了,进行增容

4.顺序表尾插

5.顺序表尾删

6.顺序表头插

7.顺序表头删

​编辑

8.顺序表查找

9.顺序表在pos位置插入x

10.顺序表删除pos位置的值

11.顺序表销毁

12.顺序表打印


一.引言        

        在计算机科学中,数据结构是计算机存储、组织数据的方式。顺序表作为一种线性表,以其简单、易用的特点,成为了许多高级数据结构的基础。了解顺序表的工作原理和实现方法,对于我们更好地理解计算机科学具有重要意义。


二.顺序表概念

        顺序表(Sequential List)是一种线性表,它的特点是数据元素在物理存储上连续,且元素之间的逻辑顺序与物理顺序相同。在顺序表中,数据元素按照一定的顺序排列,每个元素都有一个确定的位置,可以通过索引(或称为下标)直接访问。

以下是顺序表的基本概念和特性:

  1. 数据元素:顺序表中的每一个对象称为数据元素,可以是整数、浮点数、字符或者更复杂的记录类型。

  2. 索引(下标):顺序表中的每个数据元素都有一个索引,通常从0开始计数,用于指示元素在表中的位置。

  3. 长度:顺序表的长度是指表中数据元素的个数,长度可以根据需要进行动态调整,但通常有一个最大容量限制。

  4. 存储空间:顺序表通常在计算机内存中占用一段连续的存储空间,以便于通过索引快速访问元素。

  5. 随机访问:顺序表支持随机访问,即可以在O(1)的时间复杂度内直接访问到任意位置的元素。

  6. 顺序性:顺序表中的元素按照一定的顺序排列,元素之间的顺序关系是相邻的,即第一个元素紧邻第二个元素,以此类推。

顺序表的主要操作包括:

  • 初始化:创建一个空的顺序表。
  • 插入:在顺序表的指定位置插入一个新的数据元素。
  • 删除:从顺序表中删除指定的数据元素。
  • 查找:根据特定条件在顺序表中查找数据元素。
  • 排序:对顺序表中的元素进行排序。
  • 清空:将顺序表中的所有元素删除,使其变为空表。
  • 遍历:按照顺序访问顺序表中的每一个元素。

顺序表的优缺点如下:

优点

  • 访问效率高:随机访问能力强,访问任意元素的时间复杂度为O(1)。
  • 存储密度高:顺序表的数据元素紧密排列,不需要额外的空间存储元素间的关系。

缺点

  • 插入和删除操作效率低:在顺序表的中间或头部插入或删除元素时,可能需要移动大量元素,时间复杂度为O(n)。
  • 固定容量:通常顺序表的容量是固定的,若存储空间不足,需要进行扩容操作,这可能会导致性能下降。

顺序表是实现其他复杂数据结构(如栈、队列等)的基础,它在算法设计和实际应用中有着广泛的使用。  (后续也会发布用顺序表来实现栈和队列)

三.顺序表的实现

        静态顺序表只适用于确定知道需要存多少数据的场景。静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用。所以现实中基本都是使用动态顺序表,根据需要动态的分配空间大小,所以下面我们实现动态顺序表。

1.定义顺序表

        这里使用typedef函数来讲重命名为SLDateType是因为插入顺序表的数据不会是固定不变的,这么做也是为了方便后续管理和更新。

2.顺序表初始化

        将结构体里的array指向空指针,防止其变为野指针。

3.检查空间,如果满了,进行增容

        结构体里的capacity的主要功能就在这一板块实现,主要是为了检查顺序表内数据是否存满。如果满了就使用realloc函数来再次开辟空间。(这里使用了三目操作符,不懂的小伙伴可以点击三目操作符

4.顺序表尾插

5.顺序表尾删

        此操作简单易懂,需要注意的是这里的删除并不是真正物理上删除了数据,而是逻辑上减小了size的值,使print读取不到他,来做到删除的效果。

6.顺序表头插

7.顺序表头删

8.顺序表查找

9.顺序表在pos位置插入x

10.顺序表删除pos位置的值

11.顺序表销毁

12.顺序表打印

        这里类型于数组的打印,都是需要循环来实现的。

相关推荐

  1. 数据结构顺序应用

    2024-07-15 02:34:01       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 02:34:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 02:34:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 02:34:01       58 阅读
  4. Python语言-面向对象

    2024-07-15 02:34:01       69 阅读

热门阅读

  1. DP讨论——适配器、桥接模式等通用理解

    2024-07-15 02:34:01       17 阅读
  2. 昇思第19天

    2024-07-15 02:34:01       21 阅读
  3. MSYS2快速安装和使用

    2024-07-15 02:34:01       22 阅读
  4. 分布式服务基于Zookeeper的分布式锁的实现

    2024-07-15 02:34:01       19 阅读
  5. C++ 入门10:继承和派生类

    2024-07-15 02:34:01       16 阅读
  6. IDC脚本

    IDC脚本

    2024-07-15 02:34:01      18 阅读
  7. 注册sublime text右键打开

    2024-07-15 02:34:01       22 阅读
  8. LC53最大子数组和、lc5最长回文子串、lc283移动零

    2024-07-15 02:34:01       23 阅读