超详细讲解数据结构之顺序表

本文详细介绍了顺序表的概念,区分了静态顺序表和动态顺序表,重点讲解了动态顺序表的构造及其接口实现,包括容量检查、尾插、尾删、头插、头删以及在指定位置插入或删除数据等操作。同时还涵盖了顺序表的初始化、查找、修改、打印和销毁等基本功能。
摘要由CSDN通过智能技术生成

顺序表

概念

顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储,在数组上完成数据的增删查改。

顺序表一般分为静态顺序表和动态顺序表。

静态顺序表

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

简单静态顺序表结构体的初始化:

#define N 7
typedef int SLDataType;
struct Seqlist
{
   
	SLDataType a[N];
	int size;//记录数据个数
};

在这里插入图片描述

代码中数组a是用来存储要存入到顺序表中,很明显,该数组开辟的空间大小是固定的,所以有着无法优化的缺点——最大容量是固定的:
最大容量开小了,可能会导致元素存储不下,最大容量开大了会导致空间浪费严重。

故一般情况下顺序表一般都是使用动态顺序表。

动态顺序表

动态循序表的概念及构造

动态顺序表是利用动态开辟来存储元素。

typedef int SLDataType;
typedef struct Seqlist
{
   
	SLDataType* a;//指向动态开辟的数组
	int size;  //存储数据的个数
	int capacity; //存储空间的大小
}SL;

在这里插入图片描述
动态顺序表的优点在于需要多少空间来存储数据我就能开辟多少空间,不会出现大规模空间浪费和空间不足的情况。

动态顺序表接口的实现

动态顺序表接口的实现主要要完成以下几个功能:增删查找改


// 顺序表初始化
void SeqlistInit(SL* psl);

 检查空间,如果满了,进行增容
void SeqlistCheckCapacity(SL* psl);

//顺序表尾插
void SeqlistPushBack(SL* psl, SLDataType x);
//顺序表尾删
void SeqlistPopBack(SL* psl);

//顺序表头插
void SeqlistPushFront(SL* psl, SLDataType x);
//顺序表头删
void SeqlistPopFront(SL* psl);

//顺序表在pos位置插入x
void SeqlistInsert(SL* psl, size_t pos, SLDataType x);
//顺序表删除pos位置的值
void SeqlistErase(SL* psl, size_t pos);

//查找顺序表中的x的位置
int SeqlistFind(SL* psl, SLDataType x);

//修改顺序表中pos位置的值
void SeqlistModify(SL* psl, size_t pos,SLDataType x);
//销毁顺序表开辟的空间
void SeqlistDestroy(SL* psl);

//顺序表的打印
void SeqlistPrint(SL
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值