【发布时间】:2022-01-25 13:27:12
【问题描述】:
在入队时必须使用链表实现队列我必须按降序对队列进行排序并打印,出队是正常的
我每次入队时都调用了排序函数,排序函数中出现了一些错误 错误: [1]:https://i.stack.imgur.com/qVwri.png
class Queue:
def __init__(self):
self.front = self.rear = None
class Node:
def __init__(self, data):
self.data = data # Data part of the node
self.next = None # Next reference of the node
def print(self):
curr = self.front
string = ''
while curr:
string += '|' + str(curr.data) + '|'
curr = curr.next
print(string)
def is_Empty(self):
return self.front == None
def sort(self):
curr = self.front
while curr.next:
if curr.data < curr.next.data:
temp = curr.next
curr.next = curr
curr = temp
curr = curr.next
def Enqueue(self, item):
temp = Node(item)
if self.rear == None:
self.front = self.rear = temp
return
self.rear.next = temp
self.rear = temp
def Dequeue(self):
if self.is_Empty():
return("The Queue is empty!")
temp = self.front
self.front = temp.next
if (self.front == None):
self.rear = None
return self.rear
if __name__ == '__main__':
q = Queue()
while (True):
choice = int(input("1. Enqueue\n2. Dequeue\n3. Exit\n"))
if (choice == 1):
data_ll = int(input("Please enter the data: "))
q.Enqueue(data_ll)
q.sort()
q.print()
elif (choice == 2):
q.Dequeue()
q.print()
【问题讨论】:
-
接口不一致。 Dequeue 返回一个节点,而 Enqueue 接受一个值(项)。我的猜测是排序仅限于使用入队和出队操作,但当前代码似乎是尝试对链表进行排序,这是与队列不同的容器。您可能想要添加一个大小(队列中的元素数)函数(代码需要跟踪队列中的节点数)。如果使用第二个队列,则可以实现归并排序。
标签: sorting linked-list queue