数据结构和算法玩转大数据高薪算法+计算机职称考试

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

2019-11-29  本文已影响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;

}

上一篇下一篇

猜你喜欢

热点阅读