[英]How to Print elements in a queue(Python)
I have the following code in python. 我在python中有以下代码。 Inside the LinkedQueue class I have created a display method which prints all the elements in the queue.
在LinkedQueue类内部,我创建了一个显示方法,该方法可以打印队列中的所有元素。
class LinkedQueue :
class _Node :
def __init__(self, element, next):
self._element = element
self._next = next
def get_elements(self):
return self._element
def set_elements(self, num):
self._element = num
def __init__(self) :
self._head = None
self._tail = None
self._size = 0
def display(self):
tmp = self._head
while tmp != None :
print(tmp.get_elements())
tmp = tmp._next
def __len__(self) :
return self._size
def is_empty(self) :
return self._size == 0
def first(self) :
if self.is_empty() :
raise Empty('Queue is empty')
return self._head._element
def dequeue(self) :
if self.is_empty():
raise Empty('Queue is empty')
answer = self._head._element
self._head = self._head._next
self._size -= 1
if self.is_empty() :
self._tail = None
return answer
def enqueue(self, e) :
newest = self._Node(e,None)
if self.is_empty() :
self._head = newest
else :
self._tail._next = newest
self._tail = newest
self._size += 1
class Empty(Exception) :
pass
I have also created a menu function outside the class which allows the user to choose from two options: add numbers to the queue or to quit the menu. 我还在类之外创建了一个菜单功能,该功能允许用户从两个选项中进行选择:将数字添加到队列中或退出菜单。 Pressing 'n' allows the user to add numbers to the queue.
按下“ n”允许用户将数字添加到队列中。 Pressing 'q' allows the user to quit the menu.
按下“ q”允许用户退出菜单。 After the user has pressed quit, the numbers that they have entered will be printed in the order that they were entered.
用户按下退出键后,将按照输入顺序打印输入的数字。 I am having trouble with printing the numbers and am unsure of how to fix it.
我在打印数字时遇到麻烦,不确定如何解决。
def menu():
queue = LinkedQueue()
while True:
print('n - to add a number')
print('q - to quit')
selection = input('Enter your selection: ')
if selection == 'n':
number = int(input("Enter a number: "))
queue.enqueue(number)
elif selection == 'q':
break
for item in queue.display():
n = item
counter = 0
for i in range(len(queue)):
counter += 1
print('Entry # ', counter, '=', n)
Try this: 尝试这个:
class LinkedQueue :
class _Node :
def __init__(self, element, next):
self._element = element
self._next = next
def get_elements(self):
return self._element
def set_elements(self, num):
self._element = num
def __init__(self) :
self._head = None
self._tail = None
self._size = 0
def display(self):
tmp = self._head
counter = 1
while tmp != None :
#print(tmp.get_elements())
print('Entry # ', counter, '=', tmp.get_elements())
tmp = tmp._next
counter+=1
def __len__(self) :
return self._size
def is_empty(self) :
return self._size == 0
def first(self) :
if self.is_empty() :
raise Empty('Queue is empty')
return self._head._element
def dequeue(self) :
if self.is_empty():
raise Empty('Queue is empty')
answer = self._head._element
self._head = self._head._next
self._size -= 1
if self.is_empty() :
self._tail = None
return answer
def enqueue(self, e) :
newest = self._Node(e,None)
if self.is_empty() :
self._head = newest
else :
self._tail._next = newest
self._tail = newest
self._size += 1
class Empty(Exception) :
pass
def menu():
queue = LinkedQueue()
while True:
print('n - to add a number')
print('q - to quit')
selection = input('Enter your selection: ')
if selection == 'n':
number = int(input("Enter a number: "))
queue.enqueue(number)
elif selection == 'q':
queue.display()
break
'''
for item in queue.display():
n = item
counter = 0
for i in range(len(q)):
counter += 1
print('Entry # ', counter, '=', n)
'''
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.