Python数据结构与算法之 顺序表的结构与实现

顺序表存储四个整形。以32位操作系统为例,按字节寻址,需要16个字节。
4Byte = 32位

0x23200
0x27390
0x3178
0x3512112

基本的顺序存储表
顺序表存储int
Li[0] --> 0x23 --> 200
Li[3] --> 0x23 + 3*4Byte --> 12112
为什么list要从0开始? 序号相当于偏移量,便于查找。List[0]表示存储首地址偏移0;
为什么能通过偏移量的大小去寻找数据?因为所有数据的类型都相同。

然而下面的list,采用上面的方式存储就行不通了。

li = [1234, "ab"]

元素外置的顺序表

  1. 把数据放到随机分配的地址存起来。
  2. 再申请16Byte的连续存储空间存放之前随机分配的地址。
    元素外置的顺序表
    li[0] = 0x324 -->0x100 --> 12。

内存:

内存是一个一个连续的存储单元标识的,8位一个字节。
对于内存中连续的二进制数据,存的时候要制定数据类型,否则数据的存储和读取会出问题。
比如:存放一个int类型的a,下面连续的32位会被解释成一个整数;
如果是4个char型数据,连续的32位会按照8位为一个字符型数据。
在这里插入图片描述
一个顺序表的完整信息包括2部分,一部分是表中的元素集合,另一部分是为实现正常操作而需记录的信息(表头信息),即有关的整体情况的信息,这部分信息主要包括元素存储区的容量和当前表中已有的元素个数两项。
在这里插入图片描述
顺序表的一体式结构分离式结构
在这里插入图片描述
优劣比较:一体式存储来了新数据只能重新开辟空间,而分离式存储只需要修改存储的表头地址。
优缺点比较
存储区的2中扩充策略:
存储区的2中扩充策略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值