题目描述:
题解:
在python中使用list模拟栈的push pop top enpty操作,只可以使用list的append pop(0)等基本操作。
创建两个list q1 q2,q1记录栈中的内容,q2作为辅助。
1.栈的push操作可以直接用list的append实现。
2.栈的pop操作将q1中除最后一个元素外全部弹出放入q2,然后将q1最后一个元素记录在res中,交换q1 q2
3.栈的top操作和pop类似,只是q1中的最后一个元素也需要加入q2。
4.empty可以使用list的len()判断。
注意:top和pop操作首先要判断q1是否为空。
class MyStack(object): def __init__(self): self.q1 = [] self.q2 = [] def push(self, x): self.q1.append(x) def pop(self): if self.q1: while len(self.q1) > 1: num = self.q1.pop(0) self.q2.append(num) num = self.q1.pop(0) self.q1, self.q2 = self.q2, self.q1 return num def top(self): if self.q1: while len(self.q1) > 1: num = self.q1.pop(0) self.q2.append(num) num = self.q1.pop(0) self.q2.append(num) self.q1,self.q2 = self.q2,self.q1 return num def empty(self): if len(self.q1)==0: return True else: return False