动态顺序表的实现

本文介绍了如何使用C语言实现动态顺序表,包括初始化、容量检查、打印、尾插、尾删、头插、头删、插入和删除等操作。通过定义顺序表的结构体,利用realloc动态调整内存,确保数据安全。还提供了测试函数验证实现的正确性。
摘要由CSDN通过智能技术生成

动态顺序表的实现

使用C语言实现动态顺序表。

首先定义顺序表的数据类型的结构:

typedef int SLDataType;

typedef struct seqList
{
   
	SLDataType* _data;
	size_t _size;
	size_t _capacity;
}seqList;

顺序表有3个成员变量。size表示当前表内的数据个数。capacity表示表的容量。由于是动态顺序表,不能直接使用数组存储数据,而是需要申请动态内存,因此设置_data成员变量为指针类型。

主要涉及以下若干个函数的实现:

void initSeqList(seqList* sl);

void checkCapacity(seqList* sl);

void pushBack(seqList* sl, SLDataType val);

void printSeqList(seqList* sl);

void pushFront(seqList* sl, SLDataType val);

void popfront(seqList* sl);

void insert(seqList* sl, int pos, int val);

void erase(seqList* sl, int pos);

int empty(seqList* sl);

int size(seqList* sl);

int findIdx(seqList* sl, SLDataType val);

SLDataType getIdx(seqList* sl, SLDataType pos);

void destroySeqList(seqList* sl);

下面叙述它们的具体实现。

initSeqList:
在对顺序表进行操作之前一定要先进行初始化。

void initSeqList(seqList* sl){
   
	sl->_data = NULL;
	sl->_capacity = 0;
	sl->_size = 0;
}

checkCapacity:
在增加数据时,必须先检查容量是否充足,否则容易引起内存访问越界的问题。这里先对指针sl进行判空,然后再检查数据数量是否已经达到上限。若是添加第一个数据,则开辟一个数据的空间;若不是,则将现有的空间扩大2倍,并将原有数据拷贝至新内存空间中,最后释放原内存空间。使用realloc函数就可以完成这一操作。最后一步要记得将_capacity成员变量的值进行更新。

void checkCapacity(seqList* sl){
   
	if (sl == NULL){
   
		return;
	}
	if (sl->_cap
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值