为链表 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)
我想遍历我的自定义 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)