vault backup: 2024-12-01 23:50:59
This commit is contained in:
50
Data Structures/GPT Answers to Past Paper/Question 7.md
Normal file
50
Data Structures/GPT Answers to Past Paper/Question 7.md
Normal file
@@ -0,0 +1,50 @@
|
||||
# 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**).
|
||||
Reference in New Issue
Block a user