繁体   English   中英

升序添加节点

Add a node in ascending order

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

def add(self, value):
    #write your code here

    if self.head == None:
        new_node = Node(value)
        self.head = new_node
        self.tail = self.head


    elif self.head.value > new_node.value:
        new_node = Node(value)
        new_node.value = value
        new_node.next = self.head
        self.head = new_node

    else:
        new_node = Node(value)
        self.tail.setNext(new_node)
        self.tail = new_node

    self.count += 1

上面是我的函数添加的代码。 我试图将Node对象按升序添加到链接列表中,以便在打印时它显示为:

>>> x.add(8)
>>> x.add(7)
>>> x.add(3)
>>> x.add(-6)
>>> x.add(58)
>>> x.add(33)
>>> x.add(1)
>>> x.add(-88)
>>> print(x)
Head:Node(-88) Tail:Node(58)
List:-88 -6 1 3 7 8 33 58

但是,当我在上面的代码中执行此操作时,它会将其打印为:

>>> print(x)
Head:Node(-88)
Tail:Node(1)
List:-88 -6 3 7 8 58 33 1

我80%确信问题出在elif语句内,但我不确定如何解决此问题以使其升序。

1 个回复

问题出在最后。 让我们看看发生了什么:数字,动作,结果:

  • 8->如果是第一个-> 8
  • 7-> elif 8> 7-> 7,8
  • 3,-6->省略号相同-> -6,3,7,8
  • 58->最后---6、3、7、8、58

    当33到来并再次进入最后一个错误时,这里出现错误,因为它比-6的head大,结果变为-6、3、7、8、58、33。

要解决此问题,您需要遍历列表以查看需要放置33的位置,仅通过将项目放在开头或末尾就无法获得排序列表。

def add(self, value):
    #write your code here

    #if list is empty
    if self.head == None:
        new_node = Node(value)
        self.head = new_node
        self.tail = self.head

    #elif value < head set new head
    elif self.head.value > value:
        new_node = Node(value)
        new_node.value = value
        new_node.next = self.head
        self.head = new_node


    #elif value > tail set new tail
    elif value > self.tail.value:
      new_node = Node(value)
      self.tail.setNext(new_node)
      self.tail = new_node
    # and finally you need to loop to find the sweet spot
    else:
      # we will start the search from the head
      current_node = self.head
      # while the value we wish to insert is bigger than the next one
      while value > current_node.next.value:
        # set the current one to the next one
        current_node = current_node.next
      # finally we reached a node which is smaller than the value we wish to insert
      # but its next node is bigger
      new_node = Node(value)
      # set the new nodes next to the bigger node
      new_node.next = current_node.next
      # and the curren't node's next to the new one
      current_node.next = new_node
1 升序插入节点

我尝试将包含字符串的节点按升序插入到链表中。 如果第一个元素的首字母高于其他字符串的首字母,则它起作用。 例如, “Zeynep相识” “锡兰” “德米尔” 这种方式很好用。 但是,如果第一个字符串的首字母小于列表中任何字符串的首字母,则不打印任何内容。 “阿 ...

2017-11-09 18:01:58 2 50   c
2 在适当的位置添加一个节点(列表将按升序排列)

我正在尝试在适当的位置添加一个节点(按升序)。 所以当用户输入一个数字时,它的值会自动存储在一个内存位置。 例如,用户输入了 2、5、3、6 和 4。然后这些值将被存储在一个按升序排列的内存位置,因此将是:2、3、4、5 和 6。所以程序将打印出值。 然后程序将显示列表中的值 ...

3 在Datagridview中按升序添加行

我目前正在使用Datagridview.rows.Add将行添加到我的DatagridView。 有没有一种方法可以使数据按升序添加? 我不希望按钮这样做,而是默认情况下按升序添加所有数据。 我没有在属性中找到方法。 注意:之所以这样做,是因为用户不必走动即可查看当前数据。 ...

4 将节点按升序插入链表

我有一个按升序排列的链表,在某些代码中,我将生成一个新节点并取出前两个节点,并需要将其插入链表中的正确位置。 我下面的代码正在尝试执行此操作,因此我应该获取打印语句,说list is now 5 nodes long list is now 4 nodes long list is now 3 ...

5 将元素按升序添加到排序的数组中

我有以下实现分类袋的程序。 给出列表时,它可以按排序顺序(升序)成功添加元素。 当我使用另一个bag的参数创建一个新的sorted bag时,它不是按排序顺序(而是按降序排列)。 见下文 谢谢您的帮助 ...

2015-04-02 08:45:01 2 815   python
7 是否升序

如果是按升序排列,则需要打印“升序”。 否则,请打印“其他”。 ...

2014-10-19 19:41:11 4 111   java
9 订单数组升序

我有一个对象数组。 在此对象上的是NSDecimalNumber属性distanceFromDevice。 我想通过此属性订购此数组。 我为分拣工作奋斗了几个小时,有人得到任何建议吗? ...

10 按升序排列列

我有这个功能: 此函数打印这些行中的所有数据,但仅打印前 5 次。 现在,我需要按升序对打印进行排序,也就是说, 2nd row有float类型的记录,所以我不仅需要打印这 5 次出现,还需要按这一行升序对它们进行排序。 关于这个的任何想法? 编辑 因此,第 2 列上有类似浮点数的记录,它 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM