• + 0 comments

    Python

    class MyStack:
        def __init__(self) -> None:
            self.stk = []
    
        def push(self, item):
            self.stk.append(item)
    
        def pop(self):
            item = self.stk[-1]
            self.stk = self.stk[:-1]
            return item
        
        def peek(self):
            return self.stk[-1]
        
        def is_empty(self):
            return len(self.stk) == 0
        
        def __str__(self) -> str:
            res = self.stk
            return str(res)
        
    		
    		
    class MyQueueUsingStacks:
        def __init__(self) -> None:
            self.stk_main = MyStack()
            self.stk_temp = MyStack()
    
        def enqueue(self, item):
            # remove all items from main stack to temp
            while self.stk_main.is_empty() == False:
                item_to_remove = self.stk_main.pop()
                self.stk_temp.push(item_to_remove)
    
            # now push new item
            self.stk_main.push(item)
    
            # push all items again into main stack, first entered element will be on top
            while self.stk_temp.is_empty() == False:
                item_to_remove = self.stk_temp.pop()
                self.stk_main.push(item_to_remove)
             
    
        def dequeue(self):
            if self.stk_main.is_empty():
                return "Empty Queue"
            
            return self.stk_main.pop()
        
        def peek(self):
            if self.stk_main.is_empty():
                return "Empty Queue"
            
            return self.stk_main.peek()
            
    				
            
    def main_driver():
        n = int(input())
        input_list = []
    
        my_q = MyQueueUsingStacks()
    
        i = 0
        while i < n:
            inp = input_list.append(input())
            i += 1
    
        for i in input_list:
            if i[0] == "1":
                item = int(i[2:])
                # enqueue
                my_q.enqueue(item)
    
            if i[0] == "2":
                # dequeue
                my_q.dequeue()
    
            if i[0] == "3":
                # print front
                print(my_q.peek())
    
    
    main_driver()