【数据结构】顺序表

顺序表是一种线性结构,使用连续的存储单元存储数据元素。文章介绍了静态顺序表,即使用定长数组存储,以及动态顺序表,它按需动态开辟数组空间。重点讨论了动态顺序表的实现,包括初始化、销毁、插入、删除和查找等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.概念

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构(数据元素之间存在一对一的关系),一般情况下采用数组存储。在数组上完成数据的增删查改。在这里插入图片描述

2.分类

2.1静态顺序表

静态顺序表是使用定长数组存储元素。

typedef int SLDataType;//顺序表数据类型
#define N 100
typedef struct SeqList
{
	SLDataType a[100];//定长数组,记录数据
	size_t num;//记录数组元素个数
}SeqList;//重命名要有意义的名字,SeqList就是顺序表的缩写。

缺点
但我们不知道要存储数据的数目时,要如何定义数组的长度?难道是申请足够多的空间(N=100000),但如果只存放10个数据,那不是有很多空间被浪费了吗?开多了浪费,开少了不够用。所以静态顺序表的实际应用少,多使用动态顺序表。

2.2动态顺序表

动态顺序表是使用动态开辟的数组存储的,是可以按需申请的。

typedef int SLDataType;//顺序表数据类型
typedef struct SeqList
{
	SLDataType* a;//指向动态开辟的内存空间
	size_t num;//记录数组元素个数
	size_t capacity;//记录当前顺序表的最大容量,当不够是可以扩充
}SeqList;

3.动态顺序表的实现

3.1要求

  1. 我们用顺序表来存储整数。
  2. 创建一个模块(SeqList.h和SeqList.c)和一个测试模块(test.c),SeqList.h用来声明函数,SeqList.c用来实现函数。
  3. 顺序表包含增删查改的功能。

3.2准备

  1. 在头文件中声明函数以及创建顺序表。
    为什么
    因为在头文件中声明,在两个.c文件中包含该头文件,就可以使用头文件中的顺序表类型、声明的函数以及包含的头文件。
    在这里插入图片描述
  2. 在测试模块调用函数。在这里插入图片描述

3.3实现

  1. 初始化顺序表
    在这里插入图片描述

  2. 销毁顺序表。
    在这里插入图片描述

  3. 打印顺序表。在这里插入图片描述

  4. 顺序表尾部插入数据。
    在这里插入图片描述

  5. 顺序表前面插入数据
    在这里插入图片描述

  6. 顺序表后面删除数据和前面删除数据
    在这里插入图片描述

  7. 查找顺序表中元素
    在这里插入图片描述

  8. 顺序表中间插入数据
    在这里插入图片描述
    注意这里写错了,是将pos-1为下标对应数据往后移一位。

  9. 中间删除数据
    在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值