Python实现使用堆栈实现队列

Python实现使用堆栈实现队列

当需要使用堆栈来实现队列时,可以定义一个队列类,在该类中定义了两个堆栈实例。可以对队列执行不同的操作,在这个类中定义为方法。

下面是相同操作的演示:

例子

class Queue_structure:
    def __init__(self):
        self.in_val = Stack_structure()
        self.out_val = Stack_structure()

    def check_empty(self):
        return (self.in_val.check_empty() and self.out_val.check_empty())

    def enqueue_operation(self, data):
        self.in_val.push_operation(data)

    def dequeue_operation(self):
        if self.out_val.check_empty():
            while not self.in_val.check_empty():
                deleted_val = self.in_val.pop_operation()
                self.out_val.push_operation(deleted_val)
        return self.out_val.pop_operation()

class Stack_structure:
    def __init__(self):
        self.items = []

    def check_empty(self):
        return self.items == []

    def push_operation(self, data):
        self.items.append(data)

    def pop_operation(self):
        return self.items.pop()

my_instance = Queue_structure()

while True:
    print('enqueue <value>')
    print('dequeue')
    print('quit')
    my_input = input('What operation would you like to perform ?').split()

    operation = my_input[0].strip().lower()
    if operation == 'enqueue':
        my_instance.enqueue_operation(int(my_input[1]))
    elif operation == 'dequeue':
        if my_instance.check_empty():
            print('The queue is empty')
        else:
            deleted_elem = my_instance.dequeue_operation()
            print('The deleted element is : ', int(deleted_elem))
    elif operation == 'quit':
        break

输出

enqueue <value>
dequeue
quit
What operation would you like to perform ?enqueue 45
enqueue <value>
dequeue
quit
What operation would you like to perform ?enqueue 23
enqueue <value>
dequeue
quit
What operation would you like to perform ?enqueue 78
enqueue <value>
dequeue
quit
What operation would you like to perform ?dequeue
The deleted element is: 45
enqueue <value>
dequeue
quit
What operation would you like to perform ?quit

说明

  • 定义一个名为 Queue_structure 的类,该类定义了两个 Stack 实例。
  • 它有一个名为 check_empty 的方法,用于检查队列是否为空。
  • 它定义了一个名为 enqueue_operation 的方法,该方法用于向队列添加元素。
  • 它定义了一个名为 dequeue_operation 的方法,该方法从队列中删除元素。
  • 创建了另一个名为 Stack_structure 的类。
  • 初始化一个空列表。
  • 它有一个名为 check_empty 的方法,用于检查堆栈是否为空。
  • 它定义了一个名为 push_operation 的方法,该方法用于向队列添加元素。
  • 它定义了一个名为 pop_operation 的方法,该方法从队列中删除元素。
  • 创建了一个 Queue_structure 实例。
  • 给出了三个选项- enqueuedequeuequit
  • 根据用户给出的选项,执行操作,并在控制台上显示相关输出。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程