python数据结构与算法第五天【顺序表】

时间:2022-12-28 07:10:39

1.列表存储的两种方式

(1)元素内置方式

采用元素内置的方式只能存放同类型元素的数据类型,例如列表中的元素都为整形,元素类型相同,每个元素存放的地址空间大小也相同,则列表中每个元素都是顺序存放的

(2)元素外置方式

采用元素外置的方式能够存放所用不同类型元素的数据类型,例如列表中元素即有整形,又有字符串等,不同类型元素的存放空间大小不同,但是存放元素的逻辑地址本身的空间大小是一样的,均为4bytes,则列表中实际存放的是元素的逻辑地址

如图:

python数据结构与算法第五天【顺序表】

2.顺序表的一体式结构和分离式结构

(1)一体式结构:

表头信息与数据区一起存储,表头信息包括开始申请的最大存放元素个数,已存放元素个数

优点:查询方便,直接查询

缺点:当超过开始申请的最大存放元素个数时,重新申请存储空间,并修改新存储空间的表头信息,存储地址变化

(2)分离式结构:

表头信息与数据区分离存储,表头信息包括开始申请的最大存放元素个数,已存放元素个数,数据区的地址

优点:当超过开始申请的最大存放元素个数时,重新申请存储空间,直接修改原来表头的地址即可,且表头本身的存储地址不变

缺点:查询不是直接查询

如图:

python数据结构与算法第五天【顺序表】

3.顺序表扩充的方式

(1)每次扩充相同存储空间

例如:开始申请4个元素的存储空间,不够用时,再次扩充4个,不够用时,再扩充4个

(2)每次翻倍扩充存储空间

例如:开始申请4个元素的存储空间,不够用时,再次扩充8个,不够用时,再扩充16个

4.python列表添加元素和删除元素

(1)表尾插入元素

时间复杂度为O(1)

(2)非保序元素插入

时间复杂度为O(2)

(3)保序元素插入

时间复杂度为O(n)

如图:

python数据结构与算法第五天【顺序表】

5.python列表的实现

python列表打印id(my_list)的值永远不变,说明python列表是采用分离式结构实现的