3.2 KiB
Executable File
3.2 KiB
Executable File
Compare and contrast a queue with a stack.
Comparison of Queue and Stack
Aspect | Stack | Queue |
---|---|---|
Definition | A stack is a collection of elements that follows the Last-In, First-Out (LIFO) principle: the last element added is the first one removed. | A queue is a collection of elements that follows the First-In, First-Out (FIFO) principle: the first element added is the first one removed. |
Primary Operations | - Push: Add an element to the top of the stack. - Pop: Remove the top element of the stack. - Peek/Top: View the top element without removing it. |
- Enqueue: Add an element to the back of the queue. - Dequeue: Remove the element from the front of the queue. - Front: View the element at the front without removing it. |
Order of Removal | LIFO: Last element inserted is the first to be removed. | FIFO: First element inserted is the first to be removed. |
Structure | Operates on a single end of the collection (top). | Operates on both ends: elements are added at the back and removed from the front. |
Real-World Analogy | A stack of plates: the last plate added is the first one removed. | A line (queue) at a ticket counter: the first person in line is the first one served. |
Applications | - Function call stack - Undo operations in software - Backtracking algorithms (e.g., maze solving) - Expression evaluation and parsing |
- Task scheduling (e.g., printer queue) - Breadth-first search (BFS) in graphs - Data buffers (e.g., IO buffers) - Handling requests in web servers |
Performance | Both push and pop are O(1)O(1)O(1) operations in most implementations. |
Both enqueue and dequeue are O(1)O(1)O(1) operations in most implementations. |
Types/Variants | - Simple Stack - Double Stack - Min/Max Stack (keeps track of min/max values) |
- Simple Queue - Circular Queue - Priority Queue (elements removed based on priority, not order) - Deque (Double-Ended Queue) |
Key Differences
Aspect | Stack | Queue |
---|---|---|
Access Pattern | LIFO (Last-In, First-Out) | FIFO (First-In, First-Out) |
Addition (Insert) | Always at the top of the stack. | Always at the back of the queue. |
Removal (Delete) | Always from the top of the stack. | Always from the front of the queue. |
Flexibility in Ends | Operates only on one end (top). | Operates on both ends (front and back). |
Real-World Examples
Stack Examples:
- Undo Feature in Text Editors:
- When you perform actions, they are stored in a stack. Undoing removes the last action first.
- Browser Back Button:
- Tracks visited pages in a stack; the last page visited is the first to be returned when you press "Back."
Queue Examples:
- Ticket Counter:
- People stand in line (queue), and the first person in line is served first.
- Task Scheduling:
- Jobs sent to a printer are handled in the order they are received (FIFO).
Summary:
- A stack is suitable for tasks where the most recent action needs to be undone or processed first (LIFO).
- A queue is ideal for tasks where the first action needs to be processed first (FIFO).