[英]How to add a node to a linked list?
我正在創建一個 function ,它接受一個排序的鏈表和一個值。 我用 new_node = LN(v) 的給定值創建了一個新節點。 我正在嘗試在正確的 position 中返回帶有新節點的鏈表。 該示例將有助於澄清。
前任)
ll = converts_list_to_linked_list([4, 7, 9, 14]) #我有一個鏈表:4->7->9->12->14
Function:
insert_ordered(ll, 12)
返回“4->7->9->12->14->None”的鏈表
我完全不知道如何在正確的 position 中插入新節點。 我的 function 中的最后一條 else 語句不正確。
def insert_ordered(ll,x):
new_node = LN(v) #Creates new node
#If given ll is empty, newnode is the linkedlist
if ll == None:
ll = new_node
#Makes new_node the head of ll if first val is >= new_node value.
elif ll.value >= new_node.value:
temp = ll
ll = new_node
ll.next = temp
#[ERROR] Adds new_node between two nodes of ll in sorted order.
else:
while ll.next != None:
if ll.value < new_node.value:
ll = ll.next
new_node.next = ll.next
ll.next = new_node
return ll
迭代解決后,是否可以遞歸解決?
嘗試這個:
class LN:
def __init__(self, value):
self.value = value
self.next = None
def insert_ordered(root, data):
node = LN(data)
if root == None:
return node
else:
if root.value > data:
node.next = root
return node
else:
temp, prev = root, None
while temp.next and temp.value <= data:
prev = temp
temp = temp.next
if temp.next == None and temp.value <= data:
temp.next = node
else:
node.next = prev.next
prev.next = node
return root
root = None
root = insert_ordered(root, 4)
root = insert_ordered(root, 7)
root = insert_ordered(root, 9)
root = insert_ordered(root, 14)
root = insert_ordered(root, 12)
#4->7->9->12->14
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.