简体   繁体   English

如何打印队列中的元素(Python)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM