我想在Linkedlist的开头添加一个元素,但是添加了None
,而不是实际的元素
class Node:
#initialize the head node to none if not provided and set the next node to none
def __init__(self,data=None):
self.data = data
self.next = None
class Linkedlist:
def __init__(self):
self.head = Node()
def append(self,data):
#creating the node with the data parameter
new_node = Node(data)
current_node = self.head
while current_node.next is not None:
current_node = current_node.next
#when we have reached the end of list
current_node.next = new_node
def display(self):
#container for the nodes
node_elements = []
current_node = self.head
while current_node.next is not None:
current_node = current_node.next
node_elements.append(current_node.data)
print(node_elements)
#Here is where there is the issue
def insert_as_first_element(self,data):
new_node = Node(data)
new_node.next = self.head
self.head = new_node
问题出在您的
display
函数中,您需要切换提取数据和移动到下一个节点的顺序。否则,您将无法到达您在列表中输入的第一个节点。在您的问题不在于插入本身,它在更早的时候就开始于}现在是这个空的节点)。在
LinkedList
底部的空(None
)节点。然后,当您在列表的开头插入一个元素时,该节点将向下推送结构,使其出现在您的display()
调用中(假设{如果您想在链表的根目录中保留一个空节点,一个简单的解决方法是将它留在那里,并与其子节点一起操作:
你的
insert
方法似乎很好。问题似乎是将self.head
初始化为空的Node()
,但从未更新该节点的data
。将repr
方法添加到Node
作为我们看到,在添加或插入
^{pr2}$range(10)
中的数字后,结果如下所示:相反,您应该将
self.head
初始化为None
,并向append
添加一个一致的检查:结果如下:
您还必须调整您的
display
方法,因为它跳过列表中的第一个元素,这可能就是您没有注意到append
的错误的原因。在相关问题 更多 >
编程相关推荐