コード例 #1
0
class QueueUsingStack:
    '''
        Implementing Queue using two stacks
        We implement only enqueue and dequeue methods
    '''
    def __init__(self):
        self.a_stack = Stack(20)
        self.b_stack = Stack(20)

    def enqueue(self, x):
        self.a_stack.push(x)
        print("Enqueueing element: {}\n".format(x))
        print("A Stack: ", end="")
        self.a_stack.print()
        print("B Stack: ", end="")
        self.b_stack.print()
        print("---------------------------------------------")

    def dequeue(self):
        if not self.b_stack.isEmpty():
            element = self.b_stack.pop()
        else:
            while (self.a_stack.top != 0):
                x = self.a_stack.pop()
                self.b_stack.push(x)
            element = self.a_stack.pop()

        print("Dequeued element: {}\n".format(element))
        print("A Stack: ", end="")
        self.a_stack.print()
        print("B Stack: ", end="")
        self.b_stack.print()
        print("---------------------------------------------")
        return element