Stacks and Queues are two key data structures often used in programming.
A queue is a FIFO data structure: First-In First-Out in other words, it is used to implement a first come first served approach. An item that is added (enqueue) at the end of a queue will be the last one to be accessed (dequeue).
A stack is a FILO data structure: First-In Last-Out. Imagine a stack of books piled up on a table. When you add (push) a book on top of the pile, it will be the first book that you will then take (pop) from the pile (stack).
Both stacks and queues can easily be implemented in Python using a list and the append(), pop() and remove() functions.
In the following trinket we are creating our own classes, Queue and Stack. Using Object Oriented Programming (OOP) enables us to prevent direct access to the list (defined as a private attribute – This is an example of encapsulation a key concept in OOP). It also enables us to create and name our own methods, pop(), push(), enqueue() and dequeue() to match the terminology used when using stacks or queues.
Update the above Stack Class and Queue Class to have an extra private property called maxCapacity (positive integer value). This property should be initialised based on a parameter passed using the constructor of each class.
The code to push a value to the Stack or enqueue a value to the queue should be amended to only push or enqueue the value if the stack or the queue have not reached their maximum capacity.