zoukankan      html  css  js  c++  java
  • 通过两个队列实现一个栈

    首先 我们需要了解下什么是队列,什么是栈。

    队列的特性是先进先出;

    栈的特性是后进先出;

    class Stack(object):
        #初始化两个列表
        def __init__(self):
            self.queue1 = []
            self.queue2 = []
        #将数据添加到一个列表中
        def push(self,value):
            self.queue1.append(value)
            # print(self.queue1)
    
        def pop(self):
            #假如这个列表没有数据则返回None
            if len(self.queue1) == 0:
                return None
            while 1:
                #循环将列表1的数据的第一个数据取出放入另一个列表中
                if len(self.queue1) == 1:
                    #剩余最后一个的时候则是要的数据
                    value = self.queue1.pop(-1)
                    break
                self.queue2.append(self.queue1.pop(0))
            self.queue1,self.queue2 = self.queue2,self.queue1
    
            return value
    
    obj = Stack()
    obj.push('1')
    obj.push('2')
    obj.push('3')
    
    print(obj.pop())
    print(obj.pop())
    print(obj.pop())
    print(obj.pop())
    import queue
    class Stack(object):
        #初始化两个列表
        def __init__(self):
            self.queue1 = queue.Queue()
            self.queue2 = queue.Queue()
        #将数据添加到一个列表中
        def push(self,value):
            self.queue1.put(value)
            # print(self.queue1)
    
        def pop(self):
            #假如这个列表没有数据则返回None
            if self.queue1.qsize() == 0:
                return None
            while 1:
                #循环将列表1的数据的第一个数据取出放入另一个列表中
                if self.queue1.qsize() == 1:
                    #剩余最后一个的时候则是要的数据
                    value = self.queue1.get()
                    break
                self.queue2.put(self.queue1.get())
            self.queue1,self.queue2 = self.queue2,self.queue1
    
            return value
    
    obj = Stack()
    obj.push('1')
    obj.push('2')
    obj.push('3')
    
    print(obj.pop())
    print(obj.pop())
    print(obj.pop())
    print(obj.pop())
  • 相关阅读:
    springboot jpa 的使用
    《 mysiteforme 》 学习之wangEditor的使用
    《 mysiteforme 》 学习之layui table 的使用
    《 mysiteforme 》 学习之数据字典的使用
    Shiro + redis + 登录 + 记住我 + 验证码 + 登出(mysiteforme)
    spring boot 使用kindeditor上传传照片到nginx
    easypoi excel 文件导入导出
    猜年龄
    Kth number
    乌龟棋
  • 原文地址:https://www.cnblogs.com/blackball9/p/11670148.html
Copyright © 2011-2022 走看看