2、数据结构之线性表的顺序表示

作者: 萍儿的小确幸 | 来源:发表于2019-11-29 22:48 被阅读0次

    线性表,从字面上来看,就是像线一样把数据元素串联起来的表。

    线性表的顺序存储,就是用一段地址连续的存储单元依次存储线性表的数据元素。就比如,考试时候,需要提前安排好教室,考生的座位呢都要按照考号去排列。

    一、定义最大长度为50的线性表

    #define maxsize 50  //定义表的初始长度

    typedef struct{

    ElemType data[maxsize]; //元素

    int length; //当前长度

    }SqList;  //顺序表类型

    二、插入:在第i(1<=i<=L.length+1)个位置插入新元素e;输入不合法返回false;插入成功返回true

    bool in_list (SqList &L,int i,Elemtype e){

    if (i<1||i>L.length+1){return false;} //判断i是否有效

    if (L.length>=maxsize){return false;} //判断当前存储空间是否已满

    for(int j=L.length,j>i-1,j--){  //依次将第i个元素以及之后的元素后移

    L.data[j]=L.data[j-1];

    }

    L.data[i-1]=e;  //在第i个元素位置插入e

    L.length++;  //线性表长度加一

    return true;  //返回true

    }

    三、删除:删除L中第i(1<=i<=L.length)个位置的元素,成功则返回true,并将被删除的元素用引用变量e返回,否则返回false

    bool drop_list(SqList &L,int i,Elemtype &e){

    if(i<1||i>L.length){return false;}

    e=L.data[i-1];

    for(int j=i-1,j<=L.length-1,j++){

    L.data[j]=L.data[j+1];

    }

    L.length--;

    return true;

    }

    四、查找:在L中查找第一个元素值等于e的元素,并返回其位序

    int sele_list(Sqlist &L,Elemtype e){

    for(int j=0,j<L.length,j++){

    if(L.data[j]==e){

    return j+1;}

    }

    return 0;

    }

    五、删除具有最小值的元素,并由函数返回被删除元素的值,空出的位置由最后一个元素补填

    bool dele_min(Sqlist &L,ElemType &a){

    if (L.length==0){return false;}

    //查找最小

    int i;

    a=L.data[0]

    for(int j=1,j<L.length,j++){

    if(a>L.data[j]){

    a=L.data[j];

    i=j;

    }

    }

    六、删除最小,用最后一个元素填补

    if(i!=L.length-1){

    L.data[i]=L.data[L.length-1];

      }else{L.data[i]=L.data[L.length-1-1];}

    return true;

    }

    相关文章

      网友评论

        本文标题:2、数据结构之线性表的顺序表示

        本文链接:https://www.haomeiwen.com/subject/eukgwctx.html