Data structure organizes the storage in computers so that we can easily access and change data. Stacks and Queues are the earliest data structure defined in computer science. A simple Python list can act as a queue and stack as well. A queue follows FIFO rule (First In First Out) and used in programming for sorting. It is common for stacks and queues to be implemented with an array or linked list.
A Stack is a data structure that follows the LIFO(Last In First Out) principle. To implement a stack, we need two simple operations:
- push - It adds an element to the top of the stack.
- pop - It removes an element from the top of the stack.
- Adding - It adds the items in the stack and increases the stack size. The addition takes place at the top of the stack.
- Deletion - It consists of two conditions, first, if no element is present in the stack, then underflow occurs in the stack, and second, if a stack contains some elements, then the topmost element gets removed. It reduces the stack size.
- Traversing - It involves visiting each element of the stack.
- Insertion order of the stack is preserved.
- Useful for parsing the operations.
- Duplicacy is allowed.
# Code to demonstrate Implementation of
# stack using list
x = ["Python", "C", "Android"]
['Python', 'C', 'Android', 'Java', 'C++']
['Python', 'C', 'Android', 'Java']
['Python', 'C', 'Android']
A Queue follows the First-in-First-Out (FIFO) principle. It is opened from both the ends hence we can easily add elements to the back and can remove elements from the front.
To implement a queue, we need two simple operations:
- enqueue - It adds an element to the end of the queue.
- dequeue - It removes the element from the beginning of the queue.
Operations on Queue
- Addition - It adds the element in a queue and takes place at the rear end, i.e., at the back of the queue.
- Deletion - It consists of two conditions - If no element is present in the queue, Underflow occurs in the queue, or if a stack contains some elements then element present at the front gets deleted.
- Traversing - It involves to visit each element of the queue.
- Insertion order of the queue is preserved.
- Duplicacy is allowed.
- Useful for parsing CPU task operations.
Note: The implementation of a queue is a little bit different. A queue follows the "First-In-First-Out". Time plays an important factor here. The Stack is fast because we insert and pop the elements from the end of the list, whereas in the queue, the insertion and pops are made from the beginning of the list, so it becomes slow. The cause of this time difference is due to the properties of the list, which is fast in the end operation but slow at the beginning operations because all other elements have to be shifted one by one.
# Queue is created as an object 'L'
L = queue.Queue(maxsize=10)
# Data is inserted in 'L' at the end using put()
# get() takes data from
# from the head
# of the Queue