特点:
1、动态结构,整个内存空间为多个链表共用,空间可连续可不连续
2、不需要预先分配空间
3、链接域需要占用额外存储空间,相对顺序存储存储密度较小
4、不能随机存储,查找速度慢
结构:
数据域:数据元素本身的信息
链接域:直接后继或直接前驱的存储地址
分类:
单链表:每个节点除包含有数据域外,另有一个链接域,指向其直接后继节点
双链表:每个节点除包含有数据域外,另有两个链接域,分别指向其直接前驱节点和后继节点
表示:
class Node: # 常见节点
def __init__(self,data): # 初始化
self.data=data # data为要输入的数据
self.next=None # next为直接后继的地址
操作:
List(self) | 构造表,创建新表 |
---|---|
is_empty(self) | 判断是否为空 |
len(self) | 求长度 |
prepend(self.elem) | 头插法 |
append(self,elem) | 尾插法 |
insert(self,elem,i) | 指定位置插入 |
del_first(self) | 删除第一个元素 |
del_last(self) | 删除最后一个元素 |
del(self,i) | 按照位置删除 |
search(self,elem) | 搜索元素所在的位置 |
forall(self.op) | 执行表中的每个元素 |