[英]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.