首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(代码战)链接列表-排序插入(2)

(代码战)链接列表-排序插入(2)
EN

Code Review用户
提问于 2019-03-09 16:24:11
回答 1查看 38关注 0票数 1

原始问题

因此,我重写了原问题中描述的问题的代码,但是有人已经回答了这个问题,而我的重写将使他们的答案无效,所以我刚刚发布了一个新的问题。

更新解决方案

代码语言:javascript
复制
def sorted_insert(head, data):
    tmp = Node(None)
    tmp.next = head
    node = Node(data)
    while tmp.next:
        if tmp.next.data > data:
            break
        tmp = tmp.next
    node.next = tmp.next
    tmp.next = node
    return head if tmp.data else node
EN

回答 1

Code Review用户

回答已采纳

发布于 2019-03-09 18:06:27

在我看来,这次重写的目的似乎是为了减轻更换头部的特殊待遇。和以前的解决方案一样,它也缺乏不同逻辑元素的分离。在本例中,tmp用于两个目的:遍历列表,并充当虚拟对象来检查是否替换了head。

这离明确的dummy节点仅一步之遥,可以在列表前面加上列表以消除对头部的特殊处理,我认为这种干净的分离更简单、更容易理解:

代码语言:javascript
复制
def sorted_insert(head, data):
    # a dummy node inserted in front of head
    dummy = Node(None)
    dummy.next = head

    # whatever happens in the rest, the new head will be dummy.next

    # loop until the insertion point
    node = dummy
    while node.next:
        if node.next.data > data:
            break
        node = node.next

    # create the new node and insert it
    new_node = Node(data)
    new_node.next = node.next
    node.next = new_node

    # return the head. it may or may not have been replaced
    return dummy.next
票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/215100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档