顺序表介绍
顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素、使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,采用顺序存储结构的线性表通常称为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。
在这里,我们可能会有些迷惑,顺序表和普通的数组有什么区别呢?
顺序表和普通数组的区别主要有以下两点:
1.顺序表的长度可以动态增长,普通数组的长度是固定的。
2.顺序表要求插入的数据在内存中是连续的,普通数组的数据存放可以不连续。
初始化顺序表
首先,我们要创建一个顺序表类型,该顺序表类型包括了顺序表的起始位置、记录顺序表内已有元素个数的计数器(size),以及记录当前顺序表的容量的变量(capacity)。
typedef int SLDataType;//本篇博客以存放整型数据为例
typedef struct SeqList
{
SLDataType* a;//声明了一个指向顺序表的指针,姑且称它为“顺序表指针”
int size;//记录当前顺序表内元素个数
int capacity;//记录当前顺序表的最大容量
}SeqList;
然后,我们需要一个初始化函数,对顺序表进行初始化。
//初始化顺序表
void SeqListInit(SeqList* ps)
{
assert(ps);
ps->a = NULL;//刚开始时顺序表为空,顺序表指针为NULL
ps->size = 0;//起始时元素个数为0
ps->capacity = 0;//容量为0
}
销毁顺序表
因为顺序表所用的内存空间是动态开辟在堆区的,所以我们在使用完后需要及时对其进行释放,避免造成内存泄漏。
//销毁顺序表
void SeqListDestory(SeqList* ps)
{
assert(ps);
free(ps->a);//释放顺序表指针指向的空间
ps->a = NULL;//及时置空
ps->size = 0;//元素个数置0
ps->capacity = 0;//容量置0
}
若需要对数据进行保存,可以使用文件操作函数将数据保存到一个文件中,下次使用顺序表的时候先读取文件数据即可。
打印顺序表
打印就比较简单了,依次循环打印size个元素即可。
//打印顺序表
void SeqListPrint(SeqList* ps)
{
assert(ps);
int i = 0;
//循环打印顺序表指针指向的数据
for (i = 0; i < ps->size; i++)
{
printf("%d ", ps->a[i]);
}
<

本文详细介绍顺序表的基本概念、初始化及销毁方法、数据增删改查等核心操作,并提供具体实现代码。
最低0.47元/天 解锁文章
2348

被折叠的 条评论
为什么被折叠?



