DEMO · บทที่ 1 ตัวอย่าง

หัวข้อ 1 · 5 นาที

ตัวอย่าง: Stack (push / pop)

หน้านี้เป็นบทเรียนตัวอย่างเพื่อทดสอบระบบ (MDX + simulation + การบันทึกความคืบหน้า) เนื้อหาจริงของแต่ละวิชาจะอ้างอิงจาก docs/<subject>/

Stack คืออะไร

stack เป็นโครงสร้างข้อมูลแบบ LIFO (Last In, First Out) — ข้อมูลที่ใส่เข้าไปทีหลังสุดจะถูกนำออกก่อน เหมือนจานที่ซ้อนกัน หยิบได้เฉพาะใบบนสุด

  • push(x) — วาง x ไว้บนสุด
  • pop() — นำตัวบนสุดออกและคืนค่า
  • peek() — ดูค่าบนสุดโดยไม่นำออก

ลองเล่น

แก้ลำดับคำสั่งหรือความจุได้ แล้วกดเล่น หรือเดินทีละขั้นไปข้างหน้าและย้อนกลับ

ขั้นที่ 1 / 9ปกติ

ใช้ได้: push <ตัวเลข>, pop, peek — แก้แล้ว simulation เริ่มใหม่

ความจุ (capacity)
4
[0][1][2][3]ว่าง
  1. push 5
  2. push 3
  3. peek
  4. push 8
  5. pop
  6. pop
  7. pop
  8. 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;
}