最近在看《算法导论》,看到第十章——基本数据结构中,提到了链表,于是用Python
进行了实现。算法导论中只给出了三个操作:链表的查找、插入与删除。于是,暂时也只实现了这三个。
下面进行简要的介绍:
我们首先定义一个节点的类,用来存储链表中的每个节点。每个节点都有三个属性:节点存储的元素值,指向上一个节点的指针以及指向下一个节点的指针。
其中,__str__
函数使得在print一个Node对象的时候打印其value值。
接着我们定义链表类List。Python中list
是一个关键字,表示序列,故避免重复,也可以把链表叫做LinkedList
。
上述初始化函数中的self.head = None
将链表初始化为空链表。
接着分别实现搜索、插入和删除三个功能。可以对照着书中的伪码
下面的这个show_value
函数是为了依次打印链表的元素,不是必须的,可以跳过。__str__
与Node中的类似,实现了可以直接打印一个List的对象。
最后是主函数,对上述实现进行简单的测试。
完整的代码放在Github上了,仅供参考。链接为:Introduction_to_Algorihtms/list_my.py