线性表:顺序储存结构

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语言版 使用线性表的顺序储存结构定义(静态)实现线性表的初

52.Java 数据结构——线性表

大厂算法系列编码手写顺序表相关功能,线性结构核心知识点详细剖析

数据结构与算法——线性表

第一节 线性表

线性表:链式储存结构(单链表)