C语言数据结构之顺序表——从顺序表中删除元素
从静态顺序表中删除第i个位置元素
void DelElem(ElemType Sqlist[], int &n, int i){
int j;
if(i<1 || i>n)
exit(0); //非法删除
for(j=i; j<n; j++)
Sqlist[j-1]=Sqlist[j]; //将第i位置以后的元素依次前移
n--; //表长减1
}
从动态顺序表中删除第i个位置元素
void DelElem(Sqlist *L, int i){
//从顺序表中删除第i个元素
ElemType *delItem, *q;
if(i<1 || i>L->len) exit(0); //非法删除
delItem=&(L->elem[i-1]); //delItem指向第i个元素
q=L->elem+L->length-1; //q指向表尾
for(++delItem; delItem<=q; ++ delItem)*( delItem-1)=* delItem;
//将第i位置以后的元素依次前移
L->length--; //表长减1
}