Queue using Two Stacks

  • + 0 comments

    There is a really easy way to do this if you use an array, but it can be very ineffient for larger queues. Here what I suggest using as a framework for python code in order to actually try out coding with 2 stacks to simulate a proper queue:

    class DblStackQ:
        '''Use self.stack1 to refer to stack1 and self.stack2 to refer to stack 2. Only .pop, .append, and [-1] may be used on self.stack1 and self.stack2. No other lists or arrays may be used.'''
        
        stack1 = []
        stack2 = []
        
        def enqueue(self,x):
            #write code here
        
        def dequeue(self):
            #write code here
        
        def peek(self):
            #write code here
        
        
        
    if __name__ == "__main__":
        q = int(input())
        inputs = []
        for i in range(q):
            inputs.append(tuple(map(int, input().split())))
        
        queue = DblStackQ()
        for t in inputs:
            if t[0] == 1:
                queue.enqueue(t[1])
            elif t[0] == 2:
                queue.dequeue()
            elif t[0] == 3:
                print(queue.peek())