在程序中,常常须要将一组(一般是同为某个类型的)数据元素做为总体管理和使用,须要建立这种元素组,用变量记录他们,传进传出函数等。一组数据中包含的元素个数可能发生变化(能够增长或删除元素)对于这种需求,最简单的解决方案是将这样一个元素当作一个序列,用元素在序列里的位置和顺序,表示实际应用中的某种有意义的信息,或者表示数据之间的某种信息。这样一组序列元素的组织形式,咱们能够将其抽象成线性表。一个线性表是某类元素的一个集合,还记录着元素之间的一种顺序关系。html
1. 顺序表: 将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序天然表示函数
2. 链表: 将元素存放在经过连接构造起来的一系列存储块中spa
# 插入 # 1. 在尾部插入元素 时间复杂度O(1) # 2. 非保序(不常见),时间复杂度O(1) # 3.保存元素插入,时间复杂度O(n) #删除元素 # 1.删除队尾,时间复杂度O(1) # 2.非保序(不常见),时间复杂度O(1) 例如:拿最后一个填充 # 2.保序,时间复杂度O(n)
# Python中的顺序表list和tuple 两种类型采用了顺序表实现。
# tuple是不可表类型,即不变的顺序表
# list:分离式存储,动态顺序表
#元素外置,不一样类型数据 # 一体式,分离式 存储区扩充 # 一体式:数据区内存不足,从新申请内存空间,表头,数据搬迁。旧顺序表销毁 # 新的表头,顺序表地址改变 # 分离式: # 更改表头指向,指向新的内存空间,表头没变
# 内存扩充时,策略 # 1. 每次扩充固定数目,如每次扩充增长10个元素未知,这种策略可称为线性增加 # 特色:节约空间,可是扩充频繁,操做次数多 # 2. 每次扩充翻倍,如每次扩充一倍的存储空间 # 特色:减小了扩充的执行的次数,但可能会耗费资源。以空间换时间,推荐的方式。
原文出处:https://www.cnblogs.com/donghaoblogs/p/10539590.htmlcode