前面文章中,介绍了链表结构的函数方法实现,但函数实现方法在使用上不是很方便,本文介绍一种更完善的面向对象的封装方式,可以通过传参的方式创建链表。
代码示例
1、通过列表传参创建
class LinkList(): class Node(): def __init__(self, item=None): self.item = item self.next = None def __init__(self, iterable): self.head = None self.tail = None self.cur_node = None if iterable: self.extend(iterable) def extend(self, iterable): for obj in iterable: self.append(obj) def append(self, obj): s = self.Node(obj) if not self.head: self.head = s self.tail = s else: self.tail.next = s self.tail = s def find(self, obj): for n in self: if n == obj: return True else: return False lk = LinkList([1,2,3,4,5]) lk.append(6)
2、迭代输出
class LinkList(): ...... def __iter__(self): return self def __next__(self): if not self.cur_node: self.cur_node = self.head else: self.cur_node = self.cur_node.next # 判断是否到最后一个节点 if self.cur_node: return self.cur_node.item else: raise StopIteration def __repr__(self): return str(list(map(str, self))) print(lk)
本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/326