20210322

回顾 | 恋词U3

Table of Contents

回顾

顺序表操作

按元素值的查找算法

在顺序表中查找一个第一个值等于e的元素

int findElem(Sqlist L, int e)
{
int i;
for(i = 0;i < L.length; ++i)
if(e == L.data[i])
return i;
return -1;
}

插入数据元素的算法

在顺序表L的p(0 ≤ p ≤ length)位置上插入新的元素e。如果p的输入不正确,则返回0,代表插入失败;如果p的输入正确,则将顺序表第p个元素及以后元素右移一个位置,腾出一个空位置插入元素,顺序表长度增加1,插入操作成功,返回1

再来回顾一下,找了个gif结合代码更好理解

int insertElem(Sqlist &L, int p, int e)
{
int i;
if (p < 0 || p > L.length || L.length == maxSize)
return 0;
for (i = L.length-1 ; i >= p ; --i)
L.data[i+1] = L.data[i];
L.data[p] = e;
++(L.length);
return 1;
}//不要“见缝插针”,直接从表中元素所在位置作为插入位置。

删除数据元素的算法

删除顺序表中L中下标为p(0 ≤ p ≤ length-1 的元素 )(这里为length-1的原因就是上面的意思),成功返回1,否则返回0;并将删除元素的值赋给e。

//(首先这个算法具体来说肯定不针对最后一个元素,因为最后一个元素直接删掉了就行。)
int deleteElem(Sqlist &L, int p, int &e)
{
int i;
if(p < 0 || p > length - 1)
return 0;
e = L.data[p];
for(i = p; i < L.length - 1; ++i)
L.data[i] = L.data[i+1];
--(L.length);
return 1;

恋词U3