【数据结构和算法系列】2.顺序表

本文详细介绍了顺序表的概念,包括内存、类型和连续存储的关系,顺序表的两种基本形式——基本顺序表和元素外置顺序表,以及顺序表的两种基本实现方式。重点讨论了顺序表的操作,如元素的添加和删除,分析了Python中list的实现机制,解释了为什么append操作比insert快,以及为何append后list的id值不变。同时,文章还简要提及了单向链表及其在数据存储灵活性方面的重要性。
摘要由CSDN通过智能技术生成

 

引入:

几个问题:
1.列表的下标为什么从0开始;
2.为什么列表append比insert快;
3.列表append之后,id值为什么不变,即地址不变。

一、内存&类型&连续存储

内存:
单位:1字节=8位
有一个int值1,32位电脑1个整型int占4个字节,1转换成8位为0000 0001,对应有一个内存地址。
有多个整型时,如7、21、39,在内存中分别存放,地址不是连续的,如0x01、ox09、0x17,
如果放在一起,如7为0x01,则21、39分别为0x05、0x09是连续存储的,
取39时,如果知道7的地址0x01,则39的位置为0x01+2*4=0x09。
类型决定了数据在计算机中占多大的存储单位,如一个int占4个字节。
如图

内存和存储

二、顺序表的基本形式

1.基本顺序表

li = [200,389,78,12]
存储li时,会在内存申请5个连续的地址,存放这5个数,分别对应着5个连续的地址,此即基本顺序表
基本顺序表:
元素连续存储,每个元素所占的存储单元大小固定相同,下标是逻辑地址。
Loc(ei) = Loc(e0) + c*i
其中,Loc(ei)是待确定元素地址,Loc(e0)是起始地址,i表示第i个元素,c表示存储单元大小。
li指向首个元素的地址。
基本顺序表存储的数据类型是一样的。

2.元素外置顺序表

列表存储的数据类型不一样时,如
li = [12,'ab',1.11,1000]
先保存200,有一个内存地址,再保存字符串,但是不是连续的,再保存浮点数,和后边的整型,都不是连续保存的,再将它们的内存地址连续保存在内存的其他区域,存储的地址也会占用4位,内存地址的地址是连续的,此即元素外置顺序表
元素外置顺序表:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值