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
}
posted @ 2021-11-09 21:08  zonkidd  阅读(1766)  评论(0编辑  收藏  举报