【发布时间】:2014-04-06 21:54:36
【问题描述】:
如何编写像“next(lst)”这样返回 PREVIOUS 值而不是 NEXT 值的函数?
class EmptyNode():
__slots__ = ()
class Node():
__slots__ = ('data', 'next')
class MyList():
"""A class that encapsulates a node based linked list"""
__slots__ = ('head', 'size', 'cursor')
def mkEmptyNode():
return EmptyNode()
def mkNode(data, next):
node = Node()
node.data = data
node.next = next
return node
def mkMyList():
lst = MyList()
lst.head = mkEmptyNode()
lst.size = 0
lst.cursor = mkEmptyNode()
return lst
在类似['a','b','c']的链表中,next(lst)会返回'a',下一次会返回'b',下一次会返回'c',下一次会返回一个错误
def next(lst):
if isinstance(lst.cursor, EmptyNode):
raise IndexError("cursor is invalid")
val = lst.cursor.data
lst.cursor = lst.cursor.next
return val
【问题讨论】:
-
什么时候创建非空节点?因为您的
mkMyList只是创建空节点(没有next属性)
标签: python list loops linked-list iteration