抽象数据类型
抽象数据类型(ADT)的含义是指一个数学模型以及定义在此数学模型上的一组操作。即把数据类型和数据类型上的运算捆在一起,进行封装。引入抽象数据类型的目的是把数据类型的表示和数据类型上运算的实现与这些数据类型和运算在程序中的引用隔开,使它们相互独立。
最常用的数据运算有五种:
1. 插入
2. 删除
3. 修改
4. 查找
5. 排序
两种实现类型
顺序表:将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示。
链表:将元素存放在通过链接构造起来的一系列存储块中。
一. 顺序表
基本形式:顺序表的基本形式,数据元素本身连续存储,每个元素所占的存储单元大小固定相同,元素的下标是其逻辑地址
元素外置形式:将实际数据元素另行存储,而顺序表中各单元位置保存对应元素的地址信息
python中的list:
在Python的官方实现中,list就是一种采用分离式技术实现的动态顺序表。这就是为什么用list.append(x) (或 list.insert(len(list), x),即尾部插入)比在指定位置插入元素效率高的原因
二. 链表
- 单向链表
节点实现
class SingleNode():
"""单链表的结点"""
def __init__(self, item):
self.item = item # 数据
self.next = None # 下一个节点地址
-
单链表的操作
<is_empty() 链表是否为空 length() 链表长度 travel() 遍历整个链表 add(item) 链表头部添加元素 append(item) 链表尾部添加元素 insert(pos, item) 指定位置添加元素 remove(item) 删除节点 search(item) 查找节点是否存在