带有节点的Python链接列表。可迭代的 - python

我需要一些帮助为我的__iter__()类编写UnorderedList()方法。我尝试了这个:

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

但是while循环不会停止。这是我其余的课程和代码:

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

python大神给出的解决方案

如果要成功迭代所有项目,则应执行

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

这样您就可以在每一步中更进一步。

顺便说一下,Python中没有以方法的形式使用setter和getter。如果需要它们,请使用属性,否则请完全省略它们。

所以做

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