-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path04_Queue.cs
More file actions
119 lines (104 loc) · 5.74 KB
/
Copy path04_Queue.cs
File metadata and controls
119 lines (104 loc) · 5.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
using System;
using System.Collections.Generic;
namespace DataStructures
{
/// <summary>
/// Demonstrates the Queue<T> collection in C# (FIFO — First In, First Out).
/// Elements are enqueued at the back and dequeued from the front.
///
/// Common use cases: task scheduling, breadth-first search (BFS),
/// print job queues, message processing pipelines.
/// </summary>
public class QueueExamples
{
// ─── Entry Point ───────────────────────────────────────────────
public static void Main()
{
Console.WriteLine("═══════════════════════════════════════════════");
Console.WriteLine(" C# Queue<T> Examples ");
Console.WriteLine("═══════════════════════════════════════════════\n");
// ── 1. Basic Queue Operations ───────────────────────────────
Console.WriteLine("── Basic Queue Operations ─────────────────────");
var tasks = new Queue<string>();
// Enqueue — add elements to the back of the queue
tasks.Enqueue("Download files");
tasks.Enqueue("Parse data");
tasks.Enqueue("Generate report");
tasks.Enqueue("Send email notification");
Console.WriteLine($" Queue contents: {string.Join(" → ", tasks)}");
Console.WriteLine($" Count: {tasks.Count}");
Console.WriteLine();
// Peek — view the front element without removing it
Console.WriteLine("── Peek & Dequeue ─────────────────────────────");
Console.WriteLine($" Peek() → {tasks.Peek()} (queue unchanged)");
Console.WriteLine($" Count → {tasks.Count}");
Console.WriteLine();
// Dequeue — remove and return the front element (FIFO)
while (tasks.Count > 0)
{
string task = tasks.Dequeue();
Console.WriteLine($" Dequeued: \"{task}\" | Remaining: {tasks.Count}");
}
Console.WriteLine();
// ── 2. Interactive Vowel Processing Example ─────────────────
Console.WriteLine("── Vowel Enqueue / Dequeue ────────────────────");
var vowels = new Queue<char>();
// Enqueue each English vowel
char[] vowelArray = { 'a', 'e', 'i', 'o', 'u' };
foreach (char v in vowelArray)
{
vowels.Enqueue(v);
Console.WriteLine($" Enqueued: '{v}' | Queue: [{string.Join(", ", vowels)}]");
}
Console.WriteLine();
// Dequeue one by one (FIFO order preserved)
Console.WriteLine(" Dequeuing all vowels:");
while (vowels.Count > 0)
{
char v = vowels.Dequeue();
Console.WriteLine($" Dequeued: '{v}' | Remaining: [{string.Join(", ", vowels)}]");
}
Console.WriteLine();
// ── 3. ToArray & CopyTo ─────────────────────────────────────
Console.WriteLine("── ToArray / Enumeration ─────────────────────");
var numbers = new Queue<int>();
numbers.Enqueue(10);
numbers.Enqueue(20);
numbers.Enqueue(30);
numbers.Enqueue(40);
// Convert queue to array (preserves order)
int[] arr = numbers.ToArray();
Console.WriteLine($" Queue: {string.Join(", ", numbers)}");
Console.WriteLine($" Array: {string.Join(", ", arr)}");
// Enumerate without modifying the queue
Console.WriteLine(" Enumerating (queue unchanged):");
foreach (int n in numbers)
{
Console.WriteLine($" {n}");
}
Console.WriteLine();
// ── 4. TryDequeue & TryPeek (.NET 6+) ──────────────────────
Console.WriteLine("── Safe Dequeue / Peek ───────────────────────");
Console.WriteLine($" TryDequeue on non-empty queue:");
if (numbers.Count > 0)
{
int val = numbers.Dequeue();
Console.WriteLine($" Dequeued: {val}");
}
// Safely checking before Dequeue avoids InvalidOperationException
var emptyQueue = new Queue<string>();
if (emptyQueue.Count > 0)
{
emptyQueue.Dequeue(); // won't execute
}
else
{
Console.WriteLine(" (Queue is empty — skipping Dequeue)");
}
Console.WriteLine("\n═══════════════════════════════════════════════");
Console.WriteLine(" Complexity: Enqueue O(1) | Dequeue O(1) | Peek O(1)");
Console.WriteLine(" ToArray O(n) | Contains O(n)");
Console.WriteLine("═══════════════════════════════════════════════");
}
}
}