05.数据结构基础—线性表顺序存储

一.线性表存储结构及实现—顺序存储

1.1定义:

前面说过顺序存储,称为顺序表,也叫向量。很好理解,也就是元素在连续空间中也是相邻的

1.2描述顺序表的属性

属性
起始位置:空间的开始位置
容量:线性表的最大长度
当前长度:当前存有数据的长度

这里将起始位置设为LOC(a1),元素类型为int,也就是占4个字节。
我们求ai的位置:LOC(ai)=LOC(a1)+(i-1)*4

由此我么可以得到求任意元素位置的通式:LOC(ai)=LOC(a1)+(i-1)*c
其中c为数据元素大小

在c/c++语言中,可以用sizeof(ElemType)查询数据元素大小

1.3静态分配

所谓静态分配即使用一个数组来实现顺序表

#include <iostream>
using namespace std;
#define MaxSize 100  //定义最大长度

typedef struct{
   
	int data[MaxSize];  //用静态数组存放数据,前面的数据类型自行修改
	int length;     //顺序表当前长度
} SeqList;

//初始化顺序表
void InitList(SeqList &L){
   
	for(int i =0;i<=MaxSize;i++)
		L.data[i]=0;   //所有数据元素设为默认值
	L.length = 0;   //顺序表初始长度为0
}

 int main()
{
   
	SeqList L;  //声明一个顺序表
	InitList(L);   //初始化顺序表
	return 0;
}

在这里如果我们不设置元素为默认值,数据元素就会为“乱值”,原因是内存中遗留的‘脏数据’

思考一下问题:
如果“数组”存满了怎么办?如果一开始申请很大的空间,会出现设么问题?
答案就是没有办法,数组的储存空间是静态的。第二个问题,会造成很大的空间浪费。这也是静态分配的缺点。

1.4动态分配

#include <iostream>
using namespace
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不一样的鑫仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值