首页 > 程序开发 > 软件开发 > 其他 >

如何用两个栈实现一个队列

2015-02-09

How to use two stacks to implement a queue ? 今天看到的有意思的问题题,哇咔咔,简直益智类哇~ Code writer : EOF Code date : 2015 02 08 Code file : Queue_by_two_stack

How to use two stacks to implement a queue ?

今天看到的有意思的问题题,哇咔咔,简直益智类哇~

这里写图片描述


Code writer : EOF
Code date   : 2015.02.08
Code file   : Queue_by_two_stack.py
e-mail      : jasonleaster@163.com

Code description :
    How to implement a queue by two stack.


class Stack() :

      S = []
      def __init__(self, arg = []):
          self.S = [len(arg)] + arg

      def stack_empty(self) :
          if self.S[0] == 0 :
             return True
          else :
             return False

      def push(self,x) :

          self.S[0] += 1

          if len(self.S) > self.S[0] :
             self.S[self.S[0]] = x
          else :
                self.S = self.S + [x]

          return self.S

      def pop(self) :
          if self.stack_empty() == True :
             print underflow
          else :
                temp = self.S[0]
                self.S[0] -= 1
                return self.S[temp] 

      def show_stack(self) :
          print stack status:,self.S[1 : self.S[0] + 1]

#---------------------------------------------------------------

class Queue() :

    def __init__(self, argv = []) :
        self.s_1 = Stack()
        self.s_2 = Stack()

        for i in range(0, len(argv)) :
            self.s_1.push(argv[i])

    def is_empty(self) :
        if  self.s_1.stack_empty() is True and 
            self.s_2.stack_empty() is True :
            return True
        else :
            return False

    def enqueue(self, num) :
        self.s_1.push(num)

    def dequeue(self) :
        if self.s_2.stack_empty() is True :
            while self.s_1.stack_empty() is False :
                self.s_2.push(self.s_1.pop())

        if self.is_empty() is False :
            return self.s_2.pop()

#---------------------------------------------------------------


Code below this is writed for testing :)



Q = Queue([1,2,3,4,5])

Q.enqueue(100)

while Q.is_empty() is False :
    print Q.dequeue(),

运行结果:
这里写图片描述

相关文章
最新文章
热点推荐