python - 如何实现对这个链表的排序?
问题描述
所以我需要将数据从最低到最高排序。所以最低值的指针将指向下一个最高值,依此类推。到目前为止,它只指向下一个插入的数据,而不管数据如何。
我需要在附加每个值时对其进行排序
代码:
def AppendNode(self, node):
if self._isleagl(node): #just a error checking method
if self.list_start == None: #checks if list is empty
self.list_start = node
node._set_pointer(None)
else: #list not empty
item = self.list_start
while item:
if item == node: #Checks for duplicates
print("This is not allowed")
elif item._get_pointer() is None: #If it is end of the List
item._set_pointer(node)
node._set_pointer(None)
break
else: #incrimets to the next node via pointer
item = item._get_pointer()
电流输出:
Index Data Pointer
0 1 1
1 6 2
2 3 3
3 7 None
期望的输出:
Index Data Pointer
0 1 2
1 6 3
2 3 1
3 7 None
编辑:
所以我暗示了这一点,但是它仍然不起作用。我认为这与 elif 语句本身有关。
elif item.data < node.data:
node._set_pointer(item._get_pointer())
item = item._get_pointer()
break
elif item.data > node.data:
item._set_pointer(node)
item._get_pointer()
break
解决方案
如果要按排序顺序维护列表,则有时需要在中间插入节点,而不是总是将它们放在末尾:
# insert node after item
node.set_pointer(item.get_pointer()) # whatever followed item now follows node
item.set_pointer(node) # node now follows item
推荐阅读
- java - RangeFinder 程序上的 ArrayIndexOutOfBoundsExecption
- c++ - 如何将 bool 类型转换为 const char*
- c - 字符数组中的十六进制
- regex - 如果单元格有值,则添加三个单元格,如果没有,则添加两个
- javascript - 在 Angular 的 ngFor 中禁用一个按钮
- javascript - Javascript:指示何时单击列表中的项目?
- bash - 查找和替换文件中与另一个文件中的字符串匹配的子字符串
- clojure - 在 EDN 中,如何将多个值传递给从其他标记元素返回的标记元素
- css - 在 React js 中使用样式的最佳(最佳)方式
- mongodb - 当主节点崩溃并且它位于不同的主机上时会发生什么?