Files
G4G0-2/Data Structures/GPT Answers to Past Paper/Question 7.md
2025-03-16 18:59:42 +00:00

51 lines
3.2 KiB
Markdown
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. <br>- **Pop**: Remove the top element of the stack. <br>- **Peek/Top**: View the top element without removing it.|- **Enqueue**: Add an element to the back of the queue. <br>- **Dequeue**: Remove the element from the front of the queue. <br>- **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 <br>- Undo operations in software <br>- Backtracking algorithms (e.g., maze solving) <br>- Expression evaluation and parsing|- Task scheduling (e.g., printer queue) <br>- Breadth-first search (BFS) in graphs <br>- Data buffers (e.g., IO buffers) <br>- 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 <br>- Double Stack <br>- Min/Max Stack (keeps track of min/max values)|- Simple Queue <br>- Circular Queue <br>- Priority Queue (elements removed based on priority, not order) <br>- 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**:
1. **Undo Feature in Text Editors**:
- When you perform actions, they are stored in a stack. Undoing removes the last action first.
2. **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**:
1. **Ticket Counter**:
- People stand in line (queue), and the first person in line is served first.
2. **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**).