我很难弄清楚如何在单链表中的其他节点之间插入一个节点。在上面的解决方案中,我编写了一个额外的 getNodes 方法,它将数据转换为一个节点并将其推送到节点之间,但它大大增加了时间复杂度。必须有一种方法可以在不使用此自定义方法的情况下在节点之间插入,但我无法弄清楚如何。
这是我的新代码:
class Node(object):
def __init__(self, data):
self.data = data
self.nextNode = None
def __str__(self):
return str(self.data)
class LinkedList(object):
def __init__(self):
self.head = None
self.tail = None
def insert_in_between2(self, data, prev_data):
# instantiate the new node
new_node = Node(data)
# assign to head
thisval = self.head
# check each value in linked list against prev_data as long as value is not empty
prev_data2 = Node(prev_data)
while thisval is not None:
# if value is equal to prev_data
if thisval.data == prev_data2.data:
print("thisval.data == prev_data.data")
# make the new node's next point to the previous node's next
new_node.nextNode = prev_data2.nextNode
# make the previous node point to new node
prev_data2.nextNode = new_node
break
# if value is not eqaul to prev_data then assign variable to next Node
else:
thisval = thisval.nextNode
def push_from_head(self, NewVal):
new_node = Node(NewVal)
print("This is new_node: ", new_node.data)
last = self.head
print("This is last/HEAD: ", last)
if last is None:
print("Head is NONE")
self.head = new_node
print("This is self.head: ", self.head)
return
现在它打印:10, 20, 30, 40, 50 但它应该打印:10, 20, 25, 30, 40, 50。
我认为问题出在 insert_in_between2 方法中的这一行:
new_node.nextNode = prev_data2.nextNode
...因为这两个都打印出无。任何在正确方向上的帮助都会很棒。
MMMHUHU
相关分类