首页 > 其他 > 详细

用栈模拟队列和队列模拟栈

时间:2019-04-13 17:00:15      阅读:156      评论:0      收藏:0      [点我收藏+]

 栈 先进后出(FILO)

队列 先进先出(FIFO)

class MyQueue:     # 两栈模拟队列
    def __init__(self):
        self.input = []
        self.output = []
  #进队列
    def push(self, x):
        self.input.append(x)
  #出队列
    def pop(self):
        self.peek()
        return self.output.pop()
def peek(self): if not self.output: #output为空时,将input中的数倒入output while self.input: self.output.append(self.input.pop()) return self.output[-1] #返回队列顶端的数 def is_empty(self): return not self.output and not self.input obj = MyQueue() obj.push(1) obj.push(2) obj.push(3) # peek = obj.peek() num = obj.pop() print(num)

 

class MyStack:   # 用两个队列模拟栈

    def __init__(self):
        self.s1 = []
        self.s2 = []
        self.num = 0  # 标志队列元素

    def push(self, x):
        self.s1.append(x)
        self.num = x

    def pop(self):
        if self.s2:
            for _ in range(len(self.s2)-1):
                self.num = self.s2.pop(0)
                self.s1.append(self.num)
            return self.s2.pop()
        else:
            for _ in range(len(self.s1)-1):
                self.num = self.s1.pop(0)
                self.s2.append(self.num)
            return self.s1.pop()

    def top(self):
        return self.num

    def is_empty(self):
        return not self.s1 and not self.s2

 

用栈模拟队列和队列模拟栈

原文:https://www.cnblogs.com/nxrs/p/10700894.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!