为了账号安全,请及时绑定邮箱和手机立即绑定

如何将节点添加到链表?

如何将节点添加到链表?

蛊毒传说 2022-11-24 15:23:52

我正在创建一个接受排序链表和值的函数。我通过 new_node = LN(v) 创建一个具有给定值的新节点。我正在尝试返回一个链表,其中新节点位于正确的位置。该示例将有助于澄清。


前任)


ll = converts_list_to_linked_list([4, 7, 9, 14]) #我有一个链表:4->7->9->12->14


功能:


insert_ordered(ll, 12)


返回“4->7->9->12->14->None”的链表


我完全不知道如何将新节点插入正确的位置。我函数中的最后一个 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

迭代求解后,是否可以递归求解?


查看完整描述

1 回答

?
SMILET

TA贡献1485条经验 获得超4个赞

尝试这个:


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


查看完整回答
反对 回复 4天前

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信