跳至正文
View Categories

< 1 min read

304 用队列实现栈2 #

  1. 数据入栈的实现
  2. 队列实现栈

数据入栈的实现 #

在使用队列实现栈的过程中,数据入栈的操作相对麻烦,首先需要准备两个队列,再设计入栈的流程

import collections
class MyStack:
    def __init__(self):
        #初始化两个队列
        self.queue1 = collections.deque()
        self.queue2 = collections.deque()
        
    def push(self, x):
        self.queue2.append(x)
        while self.queue1:
            self.queue2.append(self.queue1.popleft())
        self.queue1, self.queue2 = self.queue2, self.queue1

队列实现栈 #

队列实现栈的类如下,包含push,pop,top,empty四种基本操作

import collections
    class MyStack:
        def __init__(self):
            #初始化两个队列
            self.queue1 = collections.deque()
            self.queue2 = collections.deque()
            
        def push(self, x):
            self.queue2.append(x)
            while self.queue1:
                self.queue2.append(self.queue1.popleft())
            self.queue1, self.queue2 = self.queue2, self.queue1
        def pop(self):
            return self.queue1.popleft()
        def top(self):
            return self.queue1[0]
    
        def empty(self):
            return not self.queue1

小结 #

  • 掌握双队列模拟进栈的方法
  • 掌握双队列实现栈的方法
  • 习题 #

    1. 为什么进栈后要交换两个队列
    2. 尝试使用单队列模拟栈