Python-按链接列表的属性排序

时间:2018-10-04 01:35:14

标签: python linked-list

我已经用Python构建了一个单链接列表,我想根据其特定的属性对LL进行排序。例如,我有一个数组的链接列表,这些数组在其特定索引之一中具有 price rating 属性。

在我的特定情况下,我想按价格或按降序的等级对餐厅进行排序。

这是我的尝试:

  def sort(self, sort_type):
    if self.head_node == None:
      print("Nothing to sort!")
      return
    ll_sorted = False
    while not ll_sorted:
      ll_sorted = True
      prev = self.head_node
      current = prev.get_next_node()
      while current.value != None:
        prev_value = int(float(prev.value[sort_type]))
        current_value = int(float(current.value[sort_type]))
        if prev_value < current_value:
          ll_sorted = False
          temp = prev
          prev = current
          current = temp
        current = current.get_next_node()

因此,链接列表中的示例条目可能如下所示:

['cafe', 'Zardoz Cafe', '4', '2', '6202 Alameda']

在索引2,我们可以拉出价格,在索引3,我们可以拉出餐厅的评级(这些餐厅都是虚构的)。因此,在上面显示的代码中,sort_type是我传递给按价格或评级(通过用户输入)排序的特定索引。

排序时,我不想更改节点的数据,而是要交换 nodes 的属性(即价格或评分)。

我成功交换了节点的数据,但是这破坏了节点属性的完整性,并且没有产生预期的结果。

我一直在尝试自己解决这个问题,但似乎无法解决这个问题。感谢您的帮助!

0 个答案:

没有答案