一 . 无序表:
1. List的操作:
python内置有List数据结构,不过是基于顺序存储实现的并进行了优化
不过我们可以用另一种方式优化python的List(实现pop带参数的操作是O(1))
为此,我们使用链表实现无序表。
无序表必须要有堆第一个节点的引用信息设置一个属性head,保存对第一个节点的引用 空表的head为None
class UnorderedList:
def __init__(self):
self.head = None
2. UnorderedList的实现:
这里的实现都比较简单,就直接上图了=_=
首先插入的最快捷方式的头插入O(1)
size : O(N)
search :
remove:
(这里若是不想分情况讨论可以增加哨兵节点 本文对此暂不讨论 但是Python对于是否是头节点的判断很方便!只需要判断previous是不是None即可)
二. 有序表:
1. 有序表的操作:
只要定义了__gt __方法的数据类型都可以比大小
2. 有序表的实现:
首先,他与无序表采用相同的链表实现方法,Node定义相同。对于isEmpty/size/remove这些方法与节点的次序无关,所以其实现与UnorderedList一样。只有search/add方法需要修改
class OrderedList:
def __init__(self):
self.head = None
利用有序性:多增加一个stop判断就可以修改了
search实现:
add方法实现 :
链表实现的算法分析: