vault backup: 2024-12-01 23:50:59
This commit is contained in:
40
Data Structures/GPT Answers to Past Paper/Question 2.md
Normal file
40
Data Structures/GPT Answers to Past Paper/Question 2.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# Describe a scenario where a stack data structure would be more suitable than a Queue
|
||||
|
||||
A **stack data structure** is more suitable than a queue in scenarios where you need to process items in a **Last-In, First-Out (LIFO)** order
|
||||
### Scenario: **Undo Operation in Text Editors**
|
||||
|
||||
- **Description**: In text editors, when a user types, deletes, or performs other actions, these operations are stored so they can be undone in reverse order of execution.
|
||||
- **Why a Stack?**:
|
||||
- The most recent action (the "last-in") is the first one that should be undone (the "first-out").
|
||||
- A stack efficiently tracks these operations, allowing actions to be added to the stack as they occur and popped off when the user undoes them.
|
||||
- **How It Works**:
|
||||
1. User types "Hello" → each character is pushed onto the stack.
|
||||
2. User presses "Undo" → the stack pops the last character added.
|
||||
|
||||
### Scenario: **Call Stack in Recursion**
|
||||
|
||||
- **Description**: When a program uses recursion, the function calls are nested, and each call must finish before the previous one can resume.
|
||||
- **Why a Stack?**:
|
||||
- The current function (most recent call) must finish execution (be "popped" off the stack) before the previous function call can resume.
|
||||
- The stack keeps track of the state and local variables for each function call.
|
||||
- **How It Works**:
|
||||
1. Function `A` calls `B`, which calls `C`.
|
||||
2. The stack stores the execution state of `A`, then `B`, then `C` (last-in).
|
||||
3. When `C` finishes, its state is removed (first-out), resuming `B`.
|
||||
|
||||
### Scenario: **Browser Backtracking**
|
||||
|
||||
- **Description**: When navigating a web browser, the "Back" button relies on a stack to revisit the most recently visited page.
|
||||
- **Why a Stack?**:
|
||||
- The most recent page (last-in) should be revisited first (first-out) when the user clicks "Back".
|
||||
- **How It Works**:
|
||||
1. User navigates to pages: A → B → C. Each page is pushed onto the stack.
|
||||
2. Clicking "Back" pops the stack, returning to page `B`, then `A`.
|
||||
|
||||
### Key Contrast with a Queue:
|
||||
|
||||
- A **queue** is more suitable when processing items in a **First-In, First-Out (FIFO)** order, such as serving customer requests or scheduling tasks.
|
||||
- A stack is better when you need **reversal** or to **process the most recent element first**, such as undo operations, recursion, or browser backtracking.
|
||||
|
||||
Describe a scenario where a stack data structure would be more suitable than a
|
||||
Queue
|
Reference in New Issue
Block a user