|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
class Node:
def __init__(self, element, pointer):
self.element = element
self.pointer = pointer
class SinglyLinkedList:
def __init__(self):
self.head = None
self.tail = None
self.size = 0
def insert(self, data):
# Start writing your code.
newNode=Node(data,None)
newNode.pointer = self.head
self.head = newNode
self.size += 1
# End writing your code.
## Here you can write some other functions inside the class if needed, or you can igore this block.
# Start writing your code.
def is_empty(self):
return self.size == 0
def __len__(self):
return self.size
# End writing your code.
def quick_sort(node):
# Start writing your code.
small = SinglyLinkedList()
big = SinglyLinkedList()
sortinglist = SinglyLinkedList()
pivot = node
nxt = pivot.pointer
while nxt!=None:
if nxt.element<=pivot.element:
small.insert(nxt.element)
else:
big.insert(nxt.element)
nxt = nxt.pointer
if small.__len__()>1:
small = quick_sort(small.head)
if big.__len__()>1:
big = quick_sort(big.head)
if not small.is_empty():
smallElement = small.head
while smallElement!=None:
sortinglist.insert(smallElement.element)
smallElement = smallElement.pointer
sortinglist.insert(pivot.element)
if not big.is_empty():
bigElement = big.head
while bigElement!=None:
sortinglist.insert(bigElement.element)
bigElement = bigElement.pointer
return sortinglist
# End writing your code.
# We will write code as follows to check your answer. You can remain or delete the following code in the submission. Because the following code will be rewritten when checking your answer.
if __name__ == '__main__':
test_list = SinglyLinkedList()
nums = [4,2,3,1,0,5] # An example. We will change it during testing.
for num in nums:
test_list.insert(num)
first_node = test_list.head # Get the first node of the linked list.
p = quick_sort(first_node)
while p.pointer != None:
print(p.element)
p = p.pointer
print(p.element)
为什么显示: while p.pointer != None:
AttributeError: 'SinglyLinkedList' object has no attribute 'pointer',我应该怎么修改上面的代码?要保持下面这部分不变:
if __name__ == '__main__':
test_list = SinglyLinkedList()
nums = [4,2,3,1,0,5] # An example. We will change it during testing.
for num in nums:
test_list.insert(num)
first_node = test_list.head # Get the first node of the linked list.
p = quick_sort(first_node)
while p.pointer != None:
print(p.element)
p = p.pointer
print(p.element) |
|