304 用队列实现栈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
小结 #
习题 #
- 为什么进栈后要交换两个队列
- 尝试使用单队列模拟栈