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())
  • 相关阅读:
    1.4 Arduino IDE
    1.3 选择适合的Arduino
    1.2为什么选择Arduino
    1.1什么是Arduino
    博文《arduino入门》预告
    Delphi实现HTMLWebBrowser实现HTML界面
    Delphi判断MDI子窗体是否被创建
    Delphi给窗体镶边-为控件加边框,描边,改变边框颜色
    Delphi 查找标题已知的窗口句柄,遍历窗口控件句柄
    DELPHI实现类似仿360桌面的程序界面
  • 原文地址:https://www.cnblogs.com/blackball9/p/11670148.html
Copyright © 2011-2022 走看看