หัวข้อ 1 · 5 นาที
ตัวอย่าง: Stack (push / pop)
หน้านี้เป็นบทเรียนตัวอย่างเพื่อทดสอบระบบ (MDX + simulation + การบันทึกความคืบหน้า)
เนื้อหาจริงของแต่ละวิชาจะอ้างอิงจาก docs/<subject>/
Stack คืออะไร
stack เป็นโครงสร้างข้อมูลแบบ LIFO (Last In, First Out) — ข้อมูลที่ใส่เข้าไปทีหลังสุดจะถูกนำออกก่อน เหมือนจานที่ซ้อนกัน หยิบได้เฉพาะใบบนสุด
push(x)— วางxไว้บนสุดpop()— นำตัวบนสุดออกและคืนค่าpeek()— ดูค่าบนสุดโดยไม่นำออก
ลองเล่น
แก้ลำดับคำสั่งหรือความจุได้ แล้วกดเล่น หรือเดินทีละขั้นไปข้างหน้าและย้อนกลับ
ใช้ได้: push <ตัวเลข>, pop, peek — แก้แล้ว simulation เริ่มใหม่
ความจุ (capacity)
- push 5
- push 3
- peek
- push 8
- pop
- pop
- pop
- pop
▭ ช่องว่าง▮ สมาชิก← top = ตัวบนสุด
1.0×
คำอธิบายทีละขั้น
สถานะเริ่มต้น
stack ว่าง ความจุ 4 ช่อง ข้อมูลเข้าและออกได้ทางเดียวคือด้านบน (top) จึงทำงานแบบ LIFO — เข้าทีหลัง ออกก่อน
คำสั่งถัดไป: push 5
ข้อสังเกต
| สถานการณ์ | เกิดเมื่อ | ชื่อเรียก |
|---|---|---|
| push ไม่ได้ | stack เต็ม | stack overflow |
| pop ไม่ได้ | stack ว่าง | stack underflow |
ts
function push(x: number) {
if (top === capacity - 1) throw new Error('stack overflow');
items[++top] = x;
}