6.线性表的顺序实现

线性表的存储结构

在计算机中线性表有两种存储结构分别是顺序存储结构和链式存储结构。

线性表的顺序表示(又称顺序存储结构或顺序映象)img

  • 顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。

  • 线性表的顺序存储结构是指用一段地址连续的存储单元依次存储线性表的数据元素。

例如:线性表(1,2,3,4,5,6)

线性表的第1个数据元素a1的存储位置称为线性表的起始位置或基地址.

  • 顺序存储结构的寻址公式

    img

计算地址只算一次与处理数据的规模无关数量级是O(1)这种运算叫随机存取。

  • 数组长度与线性表长度
    • 数组长度,线性表最多可容纳数据元素的个数
    • 线性表长度(length):当前数据元素个数

一个教室最多容纳50人(数组长度/线性表的最大存储容量),但现在教室里坐着34(线性表中当前元素个数)个数。

  • 由于顺序表中的元素要求地址连续、依次存放、随机存取、类型相同,高级程序设计语言当中可以用一维数组来实现
    • 一维数组的定义方式:类型说明符 数组名[常量表达式]

说明:常量表达式中可以包含常量和符号常量(宏命名),不能包含变量。即C语言中不允许对数组的大小作动态定义。

线性表经常进行插入和删除的操作长度可变而C中数组的长度是不可变的。

用一个额外的变量表示线性表的长度

img

img

img

只要找到基地址就可以随机存取但说好的数组呢?
ElemType是根据实际问题,你需要什么类型的数组就定义成什么,一般是根据问题定义一个结构体或者是 typedef char ElemType

数组的定义

img

数组名其实就是首元素的地址所以也可以直接定义一个指针。数组的大小用相应的函数来动态分配内存

img

用结构体变量名.成员变量名对成员访问;指针:SqList *p=&L;p->data=…;

1.malloc()函数是在程序运行时分配内存的重要工具接受一个参数:所需的内存字节数但并不会为其赋名.然而,但他确实返回了动态分配内存块的首地址.因此可以把该地址赋给一个指针变量,并使用指针访问这块内存注意要强制类型转换

(类型说明符*)malloc(size);

如向内存要100个int(类型说明符*)malloc(100*sizeof(int));

2.sizeof(x)计算变量/数据类型x所占据的字节数

3.free§释放指针p所指变量的存储空间,即彻底删除一个变量

需要加载头

文件<stdlib.h>

C++内容

img

img

(img-Pixe433K-1607064538392)]

[外链图片转存中…(img-5jfx8stA-1607064538398)]

定义一个线性表 类型说明 变量名SqList L;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值