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('栈为空。')
else:
print('删除的值为:', my_instance.pop_val())
elif operation == 'quit':
break
输出
菜单
push <value>
pop
quit
你想执行什么操作?
push 89
你想执行什么操作?
push 43
你想执行什么操作?
push 76
你想执行什么操作?
push 56
你想执行什么操作?
pop
删除的值为: 56
你想执行什么操作?
quit
说明
-
创建了一个
Stack_structure
类,初始化为空列表。 -
定义了一个名为
check_empty
的方法,用于查看堆栈是否为空。 -
定义了另一个名为
push_val
的方法,用于向堆栈中添加元素。 -
定义了另一个名为
pop_val
的方法,用于从堆栈中删除元素。 -
创建了一个
Queue_structure
类,初始化为空列表,并将列表大小分配为 0。 -
定义了一个名为
check_empty
的方法,用于查看队列是否为空。 -
定义了另一个名为
enqueue_operation
的方法,用于向队列中添加元素。 -
定义了另一个名为
dequeue_operation
的方法,用于从队列中删除元素。 -
定义了另一个名为
size_calculate
的方法,用于确定队列的大小。 -
定义了此
Stack_structure
的实例。 -
给出了四个选项 – 菜单、push、pop 和 quit。
-
根据用户输入的操作,对堆栈元素执行操作。
-
在控制台上输出了结果。