题目描述:
题解:
两个栈底层还是采用队列实现,但需要使队列保持先进先出特性来模拟栈。
1.初始化两个栈stack1 stack2,stack1模拟队列,stack2辅助。
2.向队列末尾添加元素,可以直接使用append实现。
3.删除stack1头部元素实现方式:先将stack1中全部元素依次pop后添加到Stack2,此时stack2最顶端元素就是stack1的头部元素,用result记录stack2.pop()结果,然后再将stack2剩余元素依次放回stack1,保持stack1与原来相比只是少了头部元素。
class CQueue(object): def __init__(self): self.stack1 = [] self.stack2 = [] def appendTail(self, value): self.stack1.append(value) def deleteHead(self): if len(self.stack1)==0: return -1 while self.stack1: self.stack2.append(self.stack1.pop()) result = self.stack2.pop() while self.stack2: self.stack1.append(self.stack2.pop()) return result