如何在创建 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
我在 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