小甲鱼数据结构03线性表的顺序存储结构

线性表的顺序存储结构

1,线性表的存储结构:顺序存储结构和链式存储结构。

 

2,顺序存储结构:用一段地址连续的存储单元依次存储线性表的数据元素,和数组

 

一样的。

 

3,线性表顺序存储的结构代码:

   #define MAXSIZE 20

   typedef int ElemType

   typedef struct{

ElemType data[MAXSIZE];

        int length;//线性表的当前长度

   }SqList;

 

4,顺序存储结构封装的三个属性:

       -存储空间的起始位置,即数组data的存储位置。

       -线性表的最大存储容量:数组的长度Maxsize

       -线性表的当前长度:length

 

5,注意:数组的长度和线性表的当前长度需要区分一下:数组的长度是存放线性表

 

的存储空间的总长度,一般初始化后不变,但线性表的当前长度是线性表中元素的

 

个数,会变化。

 

6,线性表的计数是从1开始的,不是0.

 

7,存储位置的计算:(假设ElemType占用c个存储单元(字节))

           LOC表示获得存储位置的函数。

           则:  LOC(ai+1)=LOC(ai)+c

        LOC(ai+1)=LOC(a1)+(i-1)*c

 小甲鱼数据结构03线性表的顺序存储结构_第1张图片

 

8获取第i个元素代码:

 

 

 

#define OK 1

#define ERROR 0

#define TRUE 1

#define FALSE 0

 

 

#define MAXSIZE 20

typedef int ElemType

typedef strut{

ElemType data[MAXSIZE];

int length;//线性表当前长度

}SqList;

 

//初识条件:顺序线性表L已存在 ,1<=i<=ListLength(L)

//操作结果:e返回 L中第 i个数据元素的值

Status GetElem(SqList L,int i,ElemType *e){

if(L.length==0||i<1||L.length){

return ERROR;

}

*e=L.data[i-1];   //线性表中第i个元素就是数组下标为(i-1)的元素

return OK;

}

 

 

插入操作:

 

/* 初始条件:顺序线性表 L已存在,1<=i<=ListLength(L) */

/* 操作结果:L中第 i个位置之前插入新的数据元素 e,L长度 +1 */

 

Status ListInsert(SqList *L,int i,ElemType e){

int k;

if(L->length==MAXSIZE){//顺序表已经满了

return ERROR;

}

if(i<1||i>L->length+1){

//i不在范围内时

return ERROR;

}

if(i<=L->length){

//若插入数据位置不在表尾

/*

将要插入位置后数据元素向后移动一位

*/

for(k=L->length-1;k>=i-1;k--){

L->data[k+1]=L->data[k];

}

}

L->data[i-1]=e;//将新的元素插入

L->length++;

return OK:

}

 

 

删除操作:

 

/*

初始条件:顺序线性表 L已存在, 1<=i<=ListLength(L)

操作结果 :删除 L的第 i个数据元素, 并用 e返回其值 ,L 的长度 -1

*/

 

Status ListDelete(SqList *L,int i,ElemType *e){

int k;

if(L->length==0){

return ERROR;

}

if(i<1||i>L->length){

return ERROR;

}

*e=L->data[i-1];

if(ilength){

for(k=i;klength;k++){

L->data[k-1]=L->data[k];

}

}

L->length--;//当前长度-1

return OK;

}

 

 

 

线性表顺序存储结构的优缺点

 

9,在读数据时,时间复杂度为O(1),在插入和删除时,时间复杂度都为O(n)

   适合元素个数比较稳定,更多是存取数据操作的应用。

 小甲鱼数据结构03线性表的顺序存储结构_第2张图片

你可能感兴趣的:(数据结构,数据结构,线性表,小甲鱼,笔记)