前面文章中,介绍了链表结构的函数方法实现,但函数实现方法在使用上不是很方便,本文介绍一种更完善的面向对象的封装方式,可以通过传参的方式创建链表。
代码示例
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://www.chenhuax.com/read/326