问题出在你对链表节点的表示上。在你的代码中,节点对象Node只有element和pointer属性,但是在快速排序算法中,你需要使用到pointer作为指向下一个节点的指针。
要修复这个问题,你需要在Node类中添加一个setter方法来设置pointer属性。例如:class Node: def __init__(self, element, pointer=None): self.element = element self.pointer = pointer def set_pointer(self, pointer): self.pointer = pointer
修改后的Node类更新了构造函数,使得可以设置初始的pointer值。并新增了set_pointer方法,用于修改pointer值。
在quick_sort函数中,你需要使用set_pointer方法来修改节点的pointer。例如:def quick_sort(node): small = SinglyLinkedList() big = SinglyLinkedList() sortinglist = SinglyLinkedList() pivot = node nxt = pivot.pointer while nxt is not None: if nxt.element < pivot.element: small.insert(nxt.element) else: big.insert(nxt.element) nxt = nxt.pointer if small.size > 0: small_element = small.head while small_element is not None: sortinglist.insert(small_element.element) small_element = small_element.pointer sortinglist.insert(pivot.element) if big.size > 0: big_element = big.head while big_element is not None: sortinglist.insert(big_element.element) big_element = big_element.pointer return sortinglist
这样修改后,你的代码就能正确运行了。同时,还需要注意在测试部分中初始化nums列表的语法问题。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |