剑指向Offer-Python版 -- 用两个栈实现队列

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

# -*- coding:utf-8 -*-
class Solution:
    def push(self, node):
        # write code here
    def pop(self):
        # return xx

思路:

栈 : 后进先出
队列:先进先出

在这里插入图片描述

# -*- coding:utf-8 -*-
class Solution:
    stack = [] # 存储栈
    assist_stack = [] # 辅助栈

    def push(self, node):
        # write code here
        self.stack.append(node) # 存储栈 加入元素

    def pop(self):
        # return xx

        while self.stack:  # 当存储栈中有元素
        	# 将存储栈末尾元素存入辅助栈 (后进先出)
            self.assist_stack.append(self.stack.pop()) 
        if self.assist_stack:
            return self.assist_stack.pop() # 辅助栈 将结果 先进后出
# -*- coding:utf-8 -*-
class Solution:
    stack = [] # 存储栈
    assist_stack = [] # 辅助栈

    def push(self, node):
        # write code here
        self.stack.append(node) # 存储栈 加入元素

    def pop(self):
		# 由于所有元素都存入辅助栈,且pop() 函数每次只弹出一个元素
		if self.assist_stack: # 当辅助栈中存在元素时
            return self.assist_stack.pop() # 辅助栈将结果弹出 (先进后出)
        while self.stack:  # 当存储栈中有元素
        	# 将存储栈末尾元素存入辅助栈 (后进先出)
            self.assist_stack.append(self.stack.pop()) 
        if self.assist_stack:
            return self.assist_stack.pop() # 辅助栈 将结果 先进后出
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章