我已经用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 的属性(即价格或评分)。
我成功交换了节点的数据,但是这破坏了节点属性的完整性,并且没有产生预期的结果。
我一直在尝试自己解决这个问题,但似乎无法解决这个问题。感谢您的帮助!