Stack<T> (LIFO) - đảo ngược bằng cách Pop từ stack gốc Push vào stack mới.
Ví dụ minh họa
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var stack = new Stack();
stack.Push('P');
stack.Push('Q');
stack.Push('R');
Console.WriteLine("Stack gốc (top → bottom):");
foreach (char c in stack) Console.Write($"{c} "); // R Q P
Console.WriteLine();
// Đảo ngược: Pop từ stack gốc → Push vào stack mới
var reversed = new Stack();
while (stack.Count > 0)
{
reversed.Push(stack.Pop());
}
Console.WriteLine("\nStack đảo ngược (top → bottom):");
foreach (char c in reversed) Console.Write($"{c} "); // P Q R
Console.WriteLine();
// Cách khác: dùng List làm trung gian
var list = new List(stack); // Lấy snapshot (top→bottom)
list.Reverse();
var reversed2 = new Stack(list);
}
}
Kết quả đầu ra
Stack gốc (top → bottom): R Q P Stack đảo ngược (top → bottom): P Q R
Lưu ý: foreach trên Stack duyệt từ top xuống bottom. Stack<T> không hỗ trợ indexer. Đảo ngược in-place không thể vì Stack chỉ truy cập top.