题目描述:要求用两个栈来模拟队列,假设使用栈A与栈B模拟队列Q,A为插入栈,B为弹出栈,以实现队列Q。
class Stack:
def __init__(self):
self.items = []
def empty(self):
"""判断栈是否为空"""
return len(self.items) == 0
def size(self):
"""栈的大小"""
return len(self.items)
def peek(self):
"""返回栈顶元素"""
if not self.empty():
return self.items[len(self.items) - 1]
else:
return None
def pop(self):
"""弹栈"""
if len(self.items) > 0:
return self.items.pop()
else:
print("栈空")
def push(self, items):
"""压栈"""
self.items.append(items)
class MyStack:
def __init__(self):
self.A = Stack() # 用来存储栈中元素
self.B = Stack() # 用来存储当前栈中的最小的元素
def push(self, data):
self.A.push(data)
def pop(self):
if self.B.empty():
while not self.A.empty():
self.B.push(self.A.peek())
self.A.pop()
first = self.B.peek()
self.B.pop()
return first
if __name__ == "__main__":
stack = Stack()
stack.push(1)
stack.push(2)
print("队列的首元素为:"+str(stack.pop()))
print("队列的首元素为:"+str(stack.pop()))