顺序表

void InitSqList(SqList &L){
   
    L.data = new Elem;
    L.length = 0;
}

bool isEmpty(SqList L){
   
    return L.length==0;
}

void printSqList(SqList L){
   
    if (isEmpty(L))return ;
    for (int i = 0; i < L.length; ++i) {
   
        cout<<L.data[i]<<" ";
    }
    cout<<endl;
}
void insertSqList(SqList &L,Elem e){
   
    L.data[L.length]=e;
    L.length++;
}

void insertDatas(SqList &L){
   
    srand(10);
    for (int i = 0; i < 20; ++i) {
   
        Elem data = (Elem)rand()%100;
        insertSqList(L,data);
    }
}

void InsertElem(SqList &L,int i,Elem e){
   
    if (i<1||i>L.length){
   return;}
    if (isEmpty(L))L.data[0]=e;
    else{
   
        //从i到length后移
        for (int j = L.length; j >= i; --j) {
   
            L.data[j+1]=L.data[j];
        }
        //插入第i-1个位置
        L.data[i-1]=e;
        L.length++;
    }
}

void DeleteElem(SqList &L,int i,Elem &elem){
   
    if (i<1 || i>L.length)return;
    elem = L.data[i-1];
    //后面第i个往前移动
    for (int j = i; j < L.length; ++j) {
   
        L.data[j-1]=L.data[j];
    }
    L.length--;
}

int GetElem(SqList L,Elem e){
   
    for (int i = 0; i < L.length; ++i) {
   
        if (e==L.data[i]){
   
            return i+1;
        }
    }
    return -1;
}
void LocateElem(SqList L,int i,Elem &e){
   
    if (i<1||i>L.length){
   
        return ;
    }
    e = L.data[i-1];
}