Python实现单向链表

Python实现单向链表:增删改查

参考资料:http://www.cnblogs.com/king-ding/p/pythonchaintable.html

Python实现单向链表_第1张图片


Python实现单向链表_第2张图片


Python实现单向链表_第3张图片

注意:

在append方法中,第62行,判断方法如果改为“if self.is_empty()",程序66行会出现报错:“AttributeError: 'NoneType' object has no attribute 'next_node'”。

分析:

根据编写程序的逻辑,如果链表不为空(self.is_empty() == False)则,头节点也不为空。因此不应该出现这个错误。但是实际上我编写的代码并没有保证链表不为空的时候,头节点也不为空。

修改方法可以修改62行,也可以修改is_empty()方法:

def is_empty(self): return self.length ==0 or not self.head

Python实现单向链表_第4张图片


Python实现单向链表_第5张图片

改进:

实现迭代器


Python实现单向链表_第6张图片
Python实现单向链表_第7张图片

总结:

编写方法操纵链表时,注意维护链表的全局属性:self.head 和self.length

具体编写时,实际上是操纵结点,这就涉及节点的属性self.data 和self.next_node

你可能感兴趣的:(Python实现单向链表)