使用堆栈实现队列的 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): returnself.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输出结果') 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
enqueuedequeue quit What operation would you like to perform ?enqueue 45 enqueue dequeue quit What operation would you like to perform ?enqueue 23 enqueue dequeue quit What operation would you like to perform ?enqueue 78 enqueue dequeue quit What operation would you like to perform ?dequeue The deleted element is : 45 enqueue 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'实例被创建。
给出了三个选项——入队、出队和退出。
根据用户给出的选项执行操作,并在控制台上显示相关输出。