• 通过两个队列实现一个栈


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

    队列的特性是先进先出;

    栈的特性是后进先出;

    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())
  • 相关阅读:
    [Silverlight] Mac OS 风格按钮 Style 实现的更新版(针对 Silverlight 2 RTW)
    神奇的事情一再发生
    加快打开XAML文件的速度
    判断句子是不是魔法咒语的算法
    Silverlight 的控件生命周期
    斐波纳契数列非递归算法
    Silverlight 调用 WCF 如何处理错误
    Silverlight 2 终于来了!
    几个 ASP.NET 小技巧
    IronPython for ASP.NET 的支持更新了
  • 原文地址:https://www.cnblogs.com/blackball9/p/11670148.html
Copyright © 2020-2023  润新知