如何实现线性表的顺序存储

**

如何实现线性表的顺序存储

**
线性表的顺序存储又称顺序表
特点:逻辑顺序与其物理顺序相同
起始位置为loc(A),sizeof(ElemType)是每个数据元素所占用存储空间的大小,则顺序存储如图所示:

顺序表内存地址
a1loc(A)
a2loc(A)+sizeof(ElemType)
ailoc(A)+(i-1)*sizeof(ElemType)
anloc(A)+(n-1)*sizeof(ElemType)
loc(A)+(MaxSize-1)*sizeof(ElemType)

注意:线性表中元素的位序是从1开始,但是数组下标是从0开始。
假定数据元素类型为ElemType,则线性表的顺序存储结构描述为
两种基本方式:静态分配和动态分配

  1. 静态分配:
    #define MaxSize 50 //定义线性表的最大长度
    typedef struct{
    ElemType data[MaxSize]; //顺序表元素
    int length; //顺序表的当前长度
    }SqList; //顺序表的类型定义

  2. 动态分配
    #define InitSize 50 //表长初始化定义
    typedef struct{
    ElemType *data; //指示动态分配数组的指针
    int MaxSize; //数组最大容量
    int length; //顺序表的当前长度
    }SeqList; //顺序表的类型定义

动态分配是需要调用函数malloc:申请一整片连续的内存空间,执行结束以后会形成一个指向这一整片空间开始地方的指针。
C的初试动态分配语句:
L.data=(ElemType*)malloc(sizeof(ElemType)*InitSize);
注意:动态分配并不是链式存储,它属于顺序存储结构,依旧是随机存储方式,只是分配空间的大小可以在运行的时候决定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值