# Difference between Stack and Queue

In this article, we will learn about the major differences between Stack and Queue data structures.

### What is a stack?

**Stack** – A stack is an abstract data structure defined as the linear collection of ordered data items in which element’s addition and deletion take place at one end of the stack.

It follows the LIFO (Last In First Out) or FILO (First In Last Our) principle, i.e., the element inserted in last is removed first, and the element inserted first is removed in last. Push and Pop operations are the basic operations performed on a stack. Push refers to the addition of an element at the top of the stack and pop refers to the deletion of the top element.

### What is Queue?

**Queue** – In the data structure, a queue is defined as the non-primitive and linear collection of ordered data of the same data type. It is also referred to as the ordered list, as all the elements have a specific order in the queue.

An element’s insertion takes place at one end of the queue, known as the rear of the queue and an element’s deletion takes place at another end of the queue, known as the front of the queue. If follows the FIFO (First In First Out) or LILO (Last In Last Out) mechanism, i.e., the newly added element into the queue is removed last, and the firstly added element into the queue is removed first. The basic operation performed on a queue are Enqueue (to add an element at the rear) and Dequeue (to delete an element from the front).

### Difference between Stack and Queue:

The main differences between these two data structures are given in the table below:

Stack | Queue |

The idea is to store data linearly such that an element’s insertion and deletion follow the FILO mechanism. | The idea is to store the data linearly such that an element’s insertion and deletion follow the FIFO mechanism. |

Frequently accessed element of the stack is the top element. | The front element of the queue is the most accessible. |

Insertion and deletion of an element are performed at one end of the stack. | An element’s insertion occurs at one end, known as the rear of the queue, and deletion at another end, known as the front of the queue. |

Push and Pop operations are the basic operations performed on a stack. | Enqueue and Dequeue are the basics operations performed on a queue. |

In the stack, we only need to main one top pointer. | We need to maintain two front and rear pointers in the queue and require extra memory for one extra pointer. |

The top pointer points to the last element of the stack, known as the top of the stack. | The front pointer and the rear pointer address the front and rear elements of the queue respectively. |

The top pointer determines the stack overflow condition in the static implementation, and the condition for the same is top == n – 1, where n is the size of the array. | In the static implementation, the full linear queue condition is determined by the rear pointer, and the condition for the same is rear == n – 1, where n is the size of the array. |

Top = -1 is the condition of stack underflow, which denotes an empty stack. | If the front is equal to -1, we can say the queue is empty. In such a case, the rear also becomes equal to -1. |

Applications of a stack include Recursion, DFS (Depth-first search), Arithmetic expression evaluations, redo and undo operations, Managing function calls, Data reversing, backward and forward operations in the browser, etc. | Applications of a queue include CPU scheduling, Disk scheduling, BFS (Breadth-first search), handles interruptions in operating systems, etc. |

No other variants of the stack. | Simple Queue, Circular Queue, Double Ended Queue, and Priority Queue are the four types of queues. |

Real-life example – A stack of plastic cups or trays at the canteen, a stack of books on a bookshelf, etc. | Real-life example – A queue of people at the bank or the ticket counter, a queue of ants, a car line at the car-washing centre, etc. |