线性表:顺序储存结构
Posted 天赋不够努力来凑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性表:顺序储存结构相关的知识,希望对你有一定的参考价值。
一、定义
一段地址连续的储存单元依次储存线性表的数据元素。
二、特点
1、插入删除时,当在尾部进行,时间复杂度为o(1),其他情况为o(n)
2、存取容易,时间复杂度为o(1),故顺序结构又叫随机存取结构
三、储存结构表示
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];//最大容量为MAXSIZE的数组
int length;//数据长度
}SqList;
四、其他操作
1、获得元素:将线性表L第i个位置的元素返回
int getElem(SqList L,int i,ElemType *e)
{
if(L.length==0||i<1||i>L.length)
return 0;
else
return L.data[i-1];
}
2、插入元素:将线性表L第i个位置插入元素e
int ListInsert(SqList *L,int i,ElemType e)
{
if(L->length==MAXSIZE)//线性表已满
return 0;
if(i<1||i>L->length+1)//插入位置不正确
return 0;
if(i<=L->length)//插入数据位置不在队尾
{
for(int k=L->length-1;k>=i-1;k--)//第i个位置的后面元素向后移动一位
L->data[k+1]=L->data[k];
}
L->data[i-1]=e;
L->length++;//元素数量加一
return 1;
}
3、删除元素
int ListDelete(SqList *L,int i,ElemType *e)
{
if(L->length==0)//表中元素为空
return 0;
if(i<1||i>L->length)//删除位置不正确
return 0;
*e=L->data[i-1];
if(i<L->length)//删除位置不在最后位置
{
for(int k=i;k<=L->length-1;k++)//将删除位置后面元素前移
L->data[k-1]=L->data[k];
}
L->length--;//元素数量减一
return 1;
}
以上是关于线性表:顺序储存结构的主要内容,如果未能解决你的问题,请参考以下文章
数据结构c语言版 使用线性表的顺序储存结构定义(静态)实现线性表的初