需要实现的函数的介绍
上期还剩下函数的头删,函数的尾删,函数的随时插入,函数的随时删除,函数的查找等五个接口没有实现接下来我们就看时实现。
函数的头删
解释:顾名思义就是把函数的第一个数据给去掉
思路:就是把后面的数据覆盖给前面,这样一个一个来就好了
代码实现:
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;
}
写完上面的几个接口之后我们的顺序表算是写完了,可以随时看看自己写的代码,多写一点力扣上面的算法题,希望看过顺序表的文章之后顺序表不在是你的困难,理解顺序表的底层逻辑客服顺序表,接下来的那座山是----链表。