C语言数据结构_从顺序表中删除元素
从静态顺序表中删除第i个位置元素的代码如下:
void DelElem(ElemType Sqlist[], int &n, int i){
int j;
if(i<1 || i>n)
exit(0); //非法删除
for(j=i; j
从动态生成的顺序表中删除第i个位置元素的代码如下:
void DelElem(Sqlist *L,int i)
{
ElemType *delItem,*q;
if(i<1 || i>L->length) exit(0);
delItem=&(L->elem[i-1]);
q=L->elem + L->length - 1;
for(++delItem;delItem<=q;++delItem)
{
*(delItem-1)=*delItem;
}
L->length--;
}
函数DelElem()的作用是在顺序表中删除第i个位置的元素,并将顺序表的长度减少1。其实现过程如下:
(1)判断删除的元素是否合法。一个长度为n的顺序表的可能删除元素的位置是1~n+1,因此如果i<1或者i>n+1,都是非法的。
(2)将顺序表的i位置以后的元素顺序后前移动一个元素的位置,这样会覆盖第i个元素的位置,起到删除第i个元素的作用。
(3)将表长减1。