以顺序表存放的数据是整数类型为例 ~
- 按位序删除
bool ListDelete(SqList &L,int i,int &e){ //i 为要插入位置的位序,用 e来接收被删除的元素
if(i<1||i>L.length) //位序的数值不合法
return false;
if(L.length==0)
return false;
e=L.data[i-1]; //位序 对应的下标为 位序-1
for(int j=i;j<=L.length-1;j++) //前移
L.data[j-1]=L.data[j];
L.length--;
return true;
}
- 按下标删除
bool ListDelete(SqList &L,int i,int &e){ //i 为要插入位置的下标,用 e来接收被删除的元素
if(i<0||i>L.length-1) //下标的数值不合法
return false;
if(L.length==0) //表为空,不可删
return false;
e=L.data[i];
for(int j=i+1;j<=L.length-1;j++) //删除下标为 i的元素,即删除位序为 i+1的元素
L.data[j-1]=L.data[j];
L.length--;
return true;
}