Learn practical skills, build real-world projects, and advance your career

Stack and Queue

Table Of Contents

Use Case 1: Video Player

Problem Statement: Video Player's queue and back stack

Suppose you are a developer in a company which is making a new video player. You are tasked to implement the video queue (Playlist) and back stack feature.

You are provided with a project which has 3 classes:

Driver: This file contains the logic to drive the application.

video_queue: This is the implementation of a queue using a list. This will be used to hold the queued videos.

Back_stack: This is the implementation of a stack using a list. This will be used to hold the last played videos.

Tasks

-- Implement a method ‘pop’ in Video_queue. This method should pop the element from the front of the queue.

-- Implement method ‘pop’ in Back_Stack. This method should pop the element from the back of the queue.

Documentation

-- Driver contains three methods; add_to_playlist(), play_next() and go_back().

play_next() represents the method which plays the video from the queue.

And go_back() represents the method which lets you go back to the last viewed videos.

class BackStack:
    
    stack = None
    
    def __init__(self):
        self.stack = [] # empty
        print("Stack created. Right now empty")
        
    def append(self, video):
        self.stack.append(video)
        print(video,"appended in the back stack")
        print("self.stack: ",self.stack)
        
    
class VideoQueue:
    
    queue = None
    
    def __init__(self):
        self.queue = [] # empty
        print("Queue created. Right now empty")
        
    def append(self, video):
        self.queue.append(video)
        print(video,"appended in the queue")
        print("self.queue: ",self.queue)