使用一个队列实现栈的 Python 程序
当需要使用单个队列来实现栈时,需要一个“Stack_structure”类以及一个“Queue_structure”类。这些类中分别定义了相应的方法来添加和删除栈和队列中的值。
下面是相同的演示 -
示例
class Stack_structure: def __init__(self): self.q = Queue_structure() def check_empty(self): return self.q.check_empty() def push_val(self, data): self.q.enqueue_operation(data) def pop_val(self): for _ in range(self.q.size_calculate() - 1): dequeued = self.q.dequeue_operation() self.q.enqueue_operation(dequeued) return self.q.dequeue_operation() class Queue_structure: def __init__(self): self.items = [] self.size = 0 def check_empty(self): return self.items == [] def enqueue_operation(self, data): self.size += 1 self.items.append(data) def dequeue_operation(self): self.size -= 1 return self.items.pop(0) def size_calculate(self): return self.size my_instance = Stack_structure() print('Menu') print('push <value>') print('pop') print('quit') while True: my_input = input('What operation would you like to perform ? ').split() operation = my_input[0].strip().lower() if operation == 'push': my_instance.push_val(int(my_input[1])) elif operation == 'pop': if my_instance.check_empty(): print('The stack is empty.') else: print('The deleted value is : ', my_instance.pop_val()) elif operation == 'quit': break
输出
Menu push <value> pop quit What operation would you like to perform ? push 89 What operation would you like to perform ? push 43 What operation would you like to perform ? push 76 What operation would you like to perform ? push 56 What operation would you like to perform ? pop The deleted value is : 56 What operation would you like to perform ? quit
解释
创建一个“Stack_structure”类,该类初始化一个空列表。
定义一个“check_empty”方法来检查栈是否为空。
定义另一个名为“push_val”的方法,该方法将元素添加到栈中。
定义另一个名为“pop_val”的方法,该方法从栈中删除元素。
创建一个“Queue_structure”类,该类初始化一个空列表并将列表的大小赋值为 0。
定义一个“check_empty”方法来检查队列是否为空。
定义另一个名为“enqueue_operation”的方法,该方法将元素添加到队列中。
定义另一个名为“dequeue_operation”的方法,该方法从队列中删除元素。
定义另一个名为“size_calculate”的方法,该方法确定队列的大小。
定义此“Stack_structure”的一个实例。
给出四个选项 - 菜单、入栈、出栈和退出。
根据用户给出的输入,对栈元素执行操作。
输出显示在控制台上。
广告