1)插入操作
在顺序表中第i个位置插入新元素e。如果i不合法,则返回false,表示插入失败;否则,将顺序表第i个位置上的元素以及其后的元素全部右移一个位置,腾出一个空位置插入新元素e,顺序表长增加1,插入成功,返回true。
bool ListInsert(&SqList L,int i;ElemType e) //传入顺序表名L,插入的位置i以及插入的数值e;
{
if(i<1||i>L.length+1) //插入的位置不能小于1或者大于表长+1,(传入数组的i值实质上是下标,需要变成i-1的);
return false;
if(L.length>=MaxSize) //判断是否表满,标满了肯定是不能插入了的;
returrn false;
for(int j=L.length;j>=i;j--) //因为要实现i插入后,本来在i的位置以及i之后的元素都需要后移,但是不能整体全部后移,所以使用的办法是利用表长L.length从表的最后开始一个一个后移,直至到达i的位置;
L.data[j]=L.data[j-1]; //元素后移的语句;
L.data[i-1]=e; //将e插入到i的位置,i位置在数组中是以下标体现的,所以需要减1;
L.length++; //同时也需要将表长加一;
return true;
}
2)删除操作
删除顺序表L中第i个位置的元素,成功则返回true,否则返回false,并将被删除的元素引用变量e返回。
bool ListDelete(&SqList L,int i;int &e) //e使用引用方法
{
if(i<1||i>L.length) //在删除操作中的i是不能大于等于L.length的
return false;
e=L.data[i-1]; //将删除的值赋值给变量e
for(int j=i;j<L.length;j++) //需要将元素从i位置开始向前移动,所以不能像插入一样从表尾开始。这里从i位置开始
L.data[j-1]=L.data[j];
L.length--;
return true ;
}
3)顺序查找
在顺序表L中查找第一个元素的值等于e的元素,并返回其下标。
int ListSearch(&SqList L,ElemType e)
{
for(int i=0;i<L.length;i++)
if(l.length[i]==e)
return i; //返回其下标
return true;
}