我必須在排隊時使用鏈表實作佇列我必須按降序對佇列進行排序并列印它,出隊是正常的
每次排隊時我都呼叫了排序函式,排序函式錯誤中出現了一些錯誤:[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()
uj5u.com熱心網友回復:
第一個錯誤是在 Enqueue 函式中創建節點。內部類函式應該作為 self.Node 呼叫,另一件事是排序函式不排序。
下面給出的是固定代碼
class Queue:
class Node:
def __init__(self, data):
self.data = data # Data part of the node
self.next = None # Next reference of the node
def __init__(self):
self.front = self.rear = None
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 get_size(self):
temp = self.front
count = 0
while (temp):
count = 1
temp = temp.next
return count
def sort(self):
# print("[",curr.data,"]")
count=self.get_size()
while(count):
curr = self.front
while (curr and curr.next):
if curr.data > curr.next.data:
temp=curr.data
curr.data=curr.next.data
curr.next.data=temp
curr = curr.next
count-=1
def Enqueue(self, item):
temp = self.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()
```
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/394586.html
