【发布时间】:2018-08-02 20:02:13
【问题描述】:
我正在尝试将元素添加到链接列表的末尾,但没有看到这种情况发生。它似乎总是将 None 添加到链表的末尾。我不确定为什么会发生这种情况,我猜这与我的 .next 设置不正确有关。我正在使用 python 来实现我的链表。有人可以帮我解决这个问题吗
下面是我的节点类
class Node:
def __init__(self):
self.data = None
self.next = None
def get_data(self):
return self.data
def set_data(self, data):
self.data = data
def get_next(self):
return self.next
def set_next(self, node):
self.next = node
这是我的带有插入方法的链表类
class SingleyLinkedList:
def __init__(self):
self.head = Node()
def insertAtHead(self, data):
currentNode = self.head
newNode = Node()
newNode.set_data(data)
if currentNode != None:
newNode.set_next(currentNode)
self.head = newNode
print("Inserted ", data, " at the head")
else:
self.head.set_next(newNode)
def insertAtEnd(self, data):
currentNode = self.head
new_node = Node()
new_node.set_data(data)
while currentNode.get_next() != None:
currentNode = currentNode.next
currentNode.set_next(new_node)
print("Inserted ", data, " at end")
def printNode(self):
print("\nPrinting the nodes")
currentNode = self.head
while currentNode.next != None:
print(currentNode.data, " --> ", end="")
currentNode = currentNode.next
print(" NULL \n")
s = SingleyLinkedList()
s.insertAtHead(5)
s.printNode()
s.insertAtHead(10)
s.printNode()
s.insertAtHead(1)
s.printNode()
s.insertAtEnd(20)
s.printNode()
我得到以下结果,
在头部插入 5
打印节点 5 --> 空
在头部插入 10
打印节点 10 --> 5 --> 空
在头部插入 1
打印节点 1 --> 10 --> 5 --> NULL
在末尾插入 20
打印节点 1 --> 10 --> 5 --> 无 --> NULL
【问题讨论】:
-
与问题无关,但
init中的self.head = Node()必须是self.head = None? -
嘿,DYZ,我已经用
self.head=None()来初始化一个空节点,同时使用self.data=None和self.next=None。这样我只需要给数据赋值,然后下一步
标签: python data-structures linked-list