Stack เป็นโครงสร้างข้อมูลแบบ LIFO (Last-In, First-Out) - รายการที่เพิ่มเข้ามาสุดท้ายจะถูกนำออกก่อน เหมือนกับกองจานที่จัดเรียงไว้
Property หลักของ Stack
| Property |
คำอธิบาย |
Count |
จำนวนสมาชิกใน Stack |
เมธอดหลัก (Methods)
| Method |
คำอธิบาย |
Push(item) |
เพิ่มสมาชิกเข้าไปด้านบน (Top) |
Pop() |
นำสมาชิกด้านบนออกและคืนค่ากลับ |
Peek() |
ดูสมาชิกด้านบน โดยไม่เอาออก |
Clear() |
ล้างสมาชิกทั้งหมด |
Contains(item) |
ตรวจสอบว่ามีสมาชิกนี้หรือไม่ |
ToArray() |
คัดลอกเป็น Array ใหม่ |
Push Operation - เพิ่มข้อมูล
Stack st = new Stack();
st.Push('A'); // Bottom -> A
st.Push('B'); // A, B
st.Push('C'); // A, B, C
st.Push('D'); // Top -> A, B, C, D
Pop Operation - นำข้อมูลออก
char top = st.Pop(); // คืนค่า 'D', Stack เหลือ A, B, C
top = st.Pop(); // คืนค่า 'C', Stack เหลือ A, B
ตัวอย่างโค้ดสมบูรณ์
using System;
using System.Collections;
namespace CollectionsApplication {
class Program {
static void Main(string[] args) {
Stack st = new Stack();
// Push operations
st.Push('A');
st.Push('B');
st.Push('C');
st.Push('D');
Console.WriteLine("Current stack: ");
foreach (char c in st) Console.Write(c + " "); // D C B A
Console.WriteLine();
// เพิ่มเพิ่มเติม
st.Push('P');
st.Push('Q');
// Peek - ดูค่าบนสุดโดยไม่เอาออก
Console.WriteLine("The next poppable value: {0}", st.Peek()); // Q
Console.WriteLine("Current stack: ");
foreach (char c in st) Console.Write(c + " "); // Q P D C B A
Console.WriteLine();
// Pop operations
Console.WriteLine("Removing values....");
st.Pop(); // Q
st.Pop(); // P
st.Pop(); // D
Console.WriteLine("Current stack: ");
foreach (char c in st) Console.Write(c + " "); // C B A
}
}
}
ผลลัพธ์
Current stack: D C B A
The next poppable value in stack: Q
Current stack: Q P D C B A
Removing values....
Current stack: C B A
Stack<T> Generic Version (แนะนำให้ใช้)
using System.Collections.Generic;
Stack stack = new Stack();
stack.Push("First");
stack.Push("Second");
string top = stack.Pop(); // "Second" - ไม่ต้อง cast
กรณีการใช้งานจริง (Use Cases)
- Undo/Redo - เก็บสถานะก่อนหน้า
- Expression Evaluation - คำนวณนิพจน์คณิตศาสตร์ (Postfix)
- Backtracking - อัลกอริทึมย้อนกลับ (Maze solving)
- Browser History - ปุ่ม Back/Forward
- Function Call Stack - การจัดการการเรียกฟังก์ชัน