225.用队列实现栈
2020-03-17 本文已影响0人
等不了天明等时光
解题思路
1、队列与栈的区别:
队列是先入队元素先出队,后入队元素后出队;栈是先入栈元素后出栈,后入栈元素先出栈。
2、在python中用列表list来模拟队列,append()函数可以在list末尾添加元素,pop(i)函数可以删除第(i+1)个元素。
3、主要步骤:
1)首先用列表list初始化一个队列:self.q = []
2)元素入栈:self.q.append()
3)移除栈顶元素:即最新添加的末尾元素self.q[-1],获取它的值然后删除它
4)获取栈顶元素:即最新添加的末尾元素self.q[-1]
5)判断栈是否为空:根据list中有无元素来判断,返回True或False
注:这里加了判断栈是否为空的操作,以防万一。
代码
class MyStack:
def __init__(self):
"""
Initialize your data structure here.
"""
self.q = []
def push(self, x: int) -> None:
"""
Push element x onto stack.
"""
self.q.append(x)
def pop(self) -> int:
"""
Removes the element on top of the stack and returns that element.
"""
# if len(self.q) != 0:
# temp = self.q[-1]
# del self.q[-1]
# return temp
# else:
# return Fasle
return self.q.pop(-1)
def top(self) -> int:
"""
Get the top element.
"""
if len(self.q) != 0:
return self.q[-1]
else:
return False
def empty(self) -> bool:
"""
Returns whether the stack is empty.
"""
if len(self.q) == 0:
return True
else:
return False
# Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()