在 python 中遍历列表节点

traverse listnode in python

有人可以帮助我如何遍历 python 中的给定列表节点。我已经写了这个命令并得到了这样的输出。

list1=[1,2,4]

命令:-

print(list1)
print(list1.val)
print(list1.next.val)

输出:-

ListNode{val: 1, next: ListNode{val: 2, next: ListNode{val: 4, next: None}}}
1
2

如评论中所述,您似乎混淆了 listsingly linked list

使用提供的列表,您只需像这样使用 for loop 进行迭代:

list1=[1,2,4]


for L in list1:
    print(L)

给出输出:

1
2
4

链表可以参考这个: https://www.tutorialspoint.com/python_data_structure/python_linked_lists.htm

要获得问题末尾列出的输出,您需要创建一个链表。例如,如果您定义以下 class:

class ListNode:
    def __init__(self, val, nxt=None):
        self.val = val
        self.next = nxt

    def __repr__(self):
        return f"ListNode{{val: {self.val}, next: {self.next}}}"

然后如果您定义 list1 如下:

list1 = ListNode(1, ListNode(2, ListNode(4, None)))

然后“命令”将给出您列出的输出。

列表到链表

如果要从列表[1,2,4]创建上面的链表,那么使用这个函数:

def createLinkedList(values):
    head = None
    for val in reversed(values):
        head = ListNode(val, head)
    return head

现在您可以将普通列表转换为链表,如下所示:

list1 = createLinkedList([1,2,4])

链表到列表

如果你想反其道而行之,从一个链表创建一个标准列表,那么定义这个函数:

def linkedListIterator(head):
    while head:
        yield head.val
        head = head.next

现在,如果你有一个链表,你可以将它传递给上面的函数。例如:

list1 = createLinkedList([1,2,4])
lst = list(linkedListIterator(list1))

lst 将是 [1,2,4]