DS-2-顺序表的插入,删除与查找的实现

插入与删除:

#include <stdio.h>
#define MaxSize 10    
typedef struct {
    int data[MaxSize];
    int length;
}SqList;

bool ListInsert(SqList &L, int i, int e) {
    if (i<1 || i>L.length + 1)        //判断i的范围是否有效
        return false;
    if (L.length >= MaxSize)        //存储空间已满
        return false;
    for (int j = L.length; j >= i; j--)    //元素依次后移
        L.data[j] = L.data[j - 1];
    L.data[i - 1] = e;
    L.length++;
    return true;
}

bool ListDelete(SqList &L, int i, int &e) {
    if (i<1 || i>L.length)
        return false;
    e = L.data[i - 1];
    for (int j = i; j < L.length; j++)        //后边元素依次前移
        L.data[j - 1] = L.data[j];
    L.length--;
    return true;
}

int main() {
    SqList L;
    InitList(L);
    //...插入几个元素,代码省略
    ListInsert(L, 3, 3);    //在第三个位置插入值为3的元素

    int e = -1;        //用e把删除的元素带回来
    if (ListDelete(L, 3, e))
        printf("已删除第3个元素,删除元素值为=%d\n", e);
    else
        printf("位序i不合法,删除失败\n");
    return 0;
}

 

静态定义与动态定义的按位查找都一样:

ElemType GetElem(SqList L, int i) {
    return L.data[i - 1];    

 

按值查找:

//在顺序表L中查找第一个元素值等于e的元素,并返回其位序 
int LocateElem(SeqList L,int e){ 
    for(int i=0;i<L.length;i++) 
        if(L.data[i]==e)        //返回位序
            return i+1;            //查找失败
    return 0; 
}

 

posted @ 2020-06-14 09:22  swefii  阅读(269)  评论(0编辑  收藏  举报