已知一个顺序表L, 其中的元素递增有序排列。
(1)查找第一个值等于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;
}
(2)在循序表L的第 p(0 <= p <= length)个位置上插入新的元素e,如果p的输入不正确,则返回0,代表插入失败;如果p的输入正确,则将顺序表第p个元素以后的元素右移一个位置,腾出的一个空位插入新元素,顺序表长度增加1,插入操作成功,返回1。
int insertElem(Sqlist &L, int p, int e) //L本身要发生改变,所以要用引用型
{
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; //将1放在p的位置上
++(L.length); //表内多了一个元素,表长自增1
return 1;
}
(3)删除循序表L中下标为p(0 <= p <=length-1) 的元素,成功返回1,否则返回0,并将被删除的元素的值赋给e。
void deleteElem(Sqlist &L, int p, int &e) //将要改变的量要用引用型
{
int i;
if(p<0||p>L.length-1)
return 0;
e=L.data[p]; //将被删除的元素赋值给e
for(i=p; i<L.length-1; ++i) //从p开始,将其后面的元素逐个前移一个位置
L.data[i]=L.data[i+1] ;
--(L.length);
return 1;
}