为链表 class 创建一个 for 循环

make a for loop for linked list class

我想遍历我的自定义 class 链表,谁能帮助我,我无法在网络上直接找到它。

问题是当我想遍历链表时它给我一个错误,并说链表中没有循环。

我想用 __iter____next__ 或其他一些更简单的算法使其可迭代。

这是我的几行代码:

class node:
      def __init__(self, data=None):
          self.data = data
          self.next = None
class linkedList:
      def __init__(self):
         self.head = node()
         self._len = 0

      def add(value):
         self._len += 1
         newNode = node(value)
         curNode = self.head

         while curNode.next != None:
               curNode = curNode.next
         
         curNode.next = newNode

首先:您的代码不起作用:add 缺少 self 参数。它应该声明为 add(self, value).

要使您的 class 实例可迭代,请定义 __iter__,并使用与您在 add 方法中使用的循环非常相似的循环,只是您不需要查看在 while 条件下领先:

class linkedList:
    def __init__(self):
        self.head = node()
        self._len = 0

    def __iter__(self):
        curNode = self.head.next  # Skip head, as it is a dummy node
        while curNode:
            yield curNode.data
            curNode = curNode.next

现在您可以使用实例可迭代的特性了:

lst = linkedList()
lst.add(19)
lst.add(33)
print(*lst)  # splash the values to print them
# or with a loop
for value in lst:
    print(value)