Python 带节点的链表。可迭代的

Python Linked List with Nodes. Iterable

我需要一些帮助来为我的 UnorderedList() class 编写 __iter__() 方法。我试过这个:

def __iter__(self):
    current = self
    while current != None:
        yield current

但是 while 循环并没有停止。这是我剩下的 classes 和代码:

class Node:
    def __init__(self,initdata):
        self.data = initdata
        self.next = None

    def getData(self):
        return self.data

    def getNext(self):
        return self.next

    def setData(self,newdata):
        self.data = newdata

    def setNext(self,newnext):
        self.next = newnext

class UnorderedList:

    def __init__(self):
        self.head = None
        self.count = 0

如果你想成功地迭代所有项目,你应该这样做

def __iter__(self):
    # Remember, self is our UnorderedList.
    # In order to get to the first Node, we must do
    current = self.head
    # and then, until we have reached the end:
    while current is not None:
        yield current
        # in order to get from one Node to the next one:
        current = current.next

让你每一步都更进一步。

顺便说一句,setter 和 getter 未在 Python 中以方法的形式使用。如果您需要它们,请使用属性,否则完全忽略它们。

那就这样吧

class Node(object):
    def __init__(self, initdata):
        self.data = initdata
        self.next = None

class UnorderedList(object):

    def __init__(self):
        self.head = None
        self.count = 0

    def __iter__(self):
        current = self.head
        while current is not None:
            yield current
            current = current.next