後進先出。Push 入堆疊,Pop 出堆疊,Peek 查看頂端不移除。
var sk = new Stack();
var sk2 = new Stack();
foreach (int i in new[] { 1, 2, 3, 4 })
{
sk.Push(i);
sk2.Push(i);
}
// 遍歷(不移除)
foreach (int i in sk) Console.WriteLine(i); // 4,3,2,1
sk.Pop(); // 移除 4
foreach (int i in sk) Console.WriteLine(i); // 3,2,1
sk2.Peek(); // 查看 4
foreach (int i in sk2) Console.WriteLine(i); // 4,3,2,1
// 清空
while (sk2.Count > 0) sk2.Pop();
先進先出。Enqueue 入隊,Dequeue 出隊,Peek 查看前端不移除。
var qu = new Queue();
var qu2 = new Queue();
foreach (int i in new[] { 1, 2, 3, 4 })
{
qu.Enqueue(i);
qu2.Enqueue(i);
}
foreach (int i in qu) Console.WriteLine(i); // 1,2,3,4
qu.Dequeue(); // 移除 1
foreach (int i in qu) Console.WriteLine(i); // 2,3,4
qu2.Peek(); // 查看 1
foreach (int i in qu2) Console.WriteLine(i); // 1,2,3,4
while (qu2.Count > 0) qu2.Dequeue();
| 特性 | Stack | Queue |
|---|---|---|
| 順序原則 | LIFO (後進先出) | FIFO (先進先出) |
| 新增方法 | Push | Enqueue |
| 移除方法 | Pop | Dequeue |
| 查看方法 | Peek (頂端) | Peek (前端) |
| 典型應用 | 遞迴轉迴圈、撤銷操作、語法解析 | 任務排程、訊息佇列、BFS 演算法 |
object,取出需轉型Peek 空集合拋出 InvalidOperationExceptionCount 屬性獲取元素數量Stack<T>、Queue<T>