顺序表的实现(三)

需要实现的函数的介绍

上期还剩下函数的头删,函数的尾删,函数的随时插入,函数的随时删除,函数的查找等五个接口没有实现接下来我们就看时实现。

函数的头删

解释:顾名思义就是把函数的第一个数据给去掉

思路:就是把后面的数据覆盖给前面,这样一个一个来就好了

代码实现:

void SLPopFront(SL* ps1)
{assert(ps1->sz > 0);
	int begin = 1;
	while (begin <ps1->sz)
	{
		ps1->a[begin -1] = ps1->a[begin];
		begin++;
	}
	ps1->sz--;
}

函数的尾删

解释:就是把函数的最后一个数据给删除就好了。

代码实现;

void SLPopBank(SL* ps1)
{
	assert(ps1->sz > 0);
	ps1->sz--;
}

函数之数据的插入

解释:就是像在函数的那里插入数据就在函数的那里插入数据。

思路:把数据往后面都移一格空出能插入数据的空间来,接下来插入需要插入的数据。

代码实现:

void SLInsert(SL* ps1,int pos, SLDataType x)
{
	assert(ps1);
	assert(pos>=0&&pos<=ps1->sz);
	int end = ps1->sz - 1;
	while(end>=pos)
	{
		ps1->a[end + 1] = ps1->a[end];
		end--;
	}
	ps1->a[pos] = x;
	ps1->sz++;
}

函数之数据的删除

解释:想要删除数据中的那个数据就删除顺序表里面的数据。

思路:利用下一个数可以覆盖上一个数的特点把数据删除。

代码实现:

void SLErase(SL* ps1,int pos)
{
	assert(ps1);
	int end = pos+1;
	while (end<ps1->sz)
	{
		ps1->a[end - 1] = ps1->a[end];
		end++;
	}
	ps1->sz--;
}

函数之数据的查找

解释:想知道数据是第几个就返回那个数据的个数。

思路:遍历一遍顺序表返回发现数据的顺序。

代码实现:

SLDataType SLFind(SL* ps1, SLDataType x)
{
	for (int i = 0; i < ps1->sz; i++)
	{
		if (ps1->a[i] == x)
		{
			return i+1;
		}
	}
	return - 1;
}

写完上面的几个接口之后我们的顺序表算是写完了,可以随时看看自己写的代码,多写一点力扣上面的算法题,希望看过顺序表的文章之后顺序表不在是你的困难,理解顺序表的底层逻辑客服顺序表,接下来的那座山是----链表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值