我正在尝试解决python中的链表编码挑战。而且我只给了以下课程来创建链接列表
# Definition for singly-linked list.
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
我可以创建一个类似这样的链接列表
x = ListNode(1)
x.next = ListNode(4)
x.next.next = ListNode(5)
但是,我如何迭代创建(在for循环内)
答案 0 :(得分:1)
您需要两个“指针”来记住列表的开头和结尾。磁头初始化一次。您最终将使用它来访问整个列表。每次添加另一个节点时,尾部都会改变:
data = [5, 1, 7, 96]
tail = head = ListNode(data[0])
for x in data[1:]:
tail.next = ListNode(x) # Create and add another node
tail = tail.next # Move the tail pointer
答案 1 :(得分:0)
您可以执行以下操作:
arr = [1,4,5]
for i in arr:
x = ListNode(i)
x = x.next
但是现在x将变成None
。由于没有其他可追踪的内容,因此无法打印元素。
您可以通过在循环之间打印x.val的值来验证这一点:
arr = [1,4,5]
for i in arr:
x = ListNode(i)
print(x.val)
x = x.next
输出:
1
4
5
答案 2 :(得分:0)
您可以向构造函数添加next
自变量:
class ListNode(object):
def __init__(self, x, next=None):
self.x = x
self.next = next
head = None
for x in [5, 1, 7, 96]:
head = ListNode(x, next=head)
# Linked list looks like:
# (96) -> ( 7) -> ( 1) -> ( 5) -> None