C语言-数据结构-顺序表的尾插和尾删

顺序表中的尾插中细节的思考与其头插一样,要考虑顺序表容量问题,因此仍需要检查其容量的函数来判断其容量大小是否足够

//扩容
void SeqListCheckCapacity(SL* L)
{
	//没有空间或空间不足 --> 我们就扩容
	if (L->size == L->capacity)
	{
		int newcapacity = L->capacity == 0 ? 4 : L->capacity * 2;  //三维运算符   一下扩二倍空间(最适合)
		SLDateType* tmp = (SLDateType*)realloc(L->a, newcapacity * sizeof(SLDateType));
		if (tmp == NULL)
		{
			printf("realloc fail\n");
			exit(-1);  //结束程序-->异常退出程序
		}

		L->a = tmp;
		L->capacity = newcapacity;
	}
}

顺序表的尾插相对头插要简单,只需要管其最后一个数据,不需要挪动其他数据,但仍需记得要改变size的值

//尾部插入 
void SeqListPushBack(SL* L, SLDateType x)
{
	// 检查增容
	SeqListCheckCapacity(L);
	//空间足够
	L->a[L->size] = x;
	L->size ++;
}

 顺序表的尾删也更简单(相比于头删),只需要改变size的值,便达成了尾删

尾删仍需考虑越界问题,一下展示出两种方法判断是否越界

温柔的if判断和暴力的assert判断

对于assert--->需要头文件#include<assert.h>  ,条件为真,没事;条件为假,终止程序。

//尾部删除
void SeqListPopBack(SL* L)  //需要考虑有无越界的情况
{
	//温柔的处理方式
	//if (L->size > 0)
	//{
	//	L->size--;
	//}

	//暴力的处理方式
	assert(L->size > 0); 

	L->size--;
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值