如何在创建 LinkedList 时检索第一个添加的节点?

How to retrieve the first added node when a LinkedList is created?

我在 Python 中使用以下 classes:

创建了一个链表

class:节点

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class 链表:

class LinkedList:
    def __init__(self):
        self.head = None
    def insert_at_beginning(self, data):
        temp = Node(data)
        if self.head is None:
            self.head = temp
        else:
            temp.next = self.head
            self.head = temp

    def insert_at_end(self, data):
        temp = Node(data)
        if self.head is None:
            self.head = temp
        else:
            curr = self.head
            while curr.next is not None:
                curr = curr.next
            curr.next = temp

    def insert_at_position(self, pos, data):
        temp = Node(data)
        if self.head is None:
            self.head = temp
        else:
            curr = self.head
            i = 1
            while i < pos:
                curr = curr.next
                i += 1
            temp.next = curr.next
            curr.next = temp

    def traverse_list(self):
        if self.head is None:
            print('List is empty')
        else:
            curr = self.head
            while curr.next is not None:
                print(curr.data)
                curr = curr.next

下面是我调用插入方法的顺序。

ll = LinkedList()
ll.head = Node(1)
ll.insert_at_beginning(data=10)
ll.insert_at_beginning(data=11)
ll.traverse()

输出中打印的元素是:11 & 10 这是我插入的但我没有看到值 1 这是我添加的节点开始。 我在这里错过了使第一个值跳过或不被考虑的任何逻辑吗?

您的问题来自 traverse_list() 中的 while curr.next is not None:。假设您指向最后一个节点,它的 next 节点显然是 None。因此,它将在打印最后一个节点的数据之前停止循环。

你可以试试这个:

def traverse_list(self):
    if self.head is None:
        print('List is empty')
    else:
        curr = self.head
        while curr is not None:
            print(curr.data)
            curr = curr.next