Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม

ความแตกต่างระหว่าง Stack และ Queue โครงสร้างข้อมูล

บทนำ

Stack และ Queue เป็น Non-Primitive Data Structures (โครงสร้างข้อมูลที่ไม่ใช่ชนิดพื้นฐาน) ทั้งคู่จัดเก็บข้อมูลแบบลำดับแต่มีหลักการทำงานต่างกันอย่างสิ้นเชิง

ตารางเปรียบเทียบ Stack และ Queue

ลำดับ หัวข้อ Stack Queue
1 หลักการทำงาน (Internal Implementation) LIFO (Last In First Out) - ตัวที่เข้าไปทีหลังจะออกก่อน FIFO (First In First Out) - ตัวที่เข้าไปก่อนจะออกก่อน
2 จุดทำงาน (Target Element) ทำงานที่ ปลายเดียว (Top) เท่านั้น Insert ที่ Rear (ท้าย) Delete ที่ Front (หน้า)
3 Flag/Pointer ที่ใช้ ใช้ 1 Pointer (Top) ชี้ไปยังตัวบนสุด ใช้ 2 Pointers (Front, Rear) ชี้หน้าและท้าย
4 ชื่อ Operations Push (เพิ่ม), Pop (ลบ) Enqueue (เพิ่ม), Dequeue (ลบ)
5 รูปแบบเวรเชียว (Variants) ไม่มี Variant หลัก (มีแค่ Stack ธรรมดา) มีหลายรูปแบบ: Circular Queue, Priority Queue, Deque (Double-ended Queue)
6 ความซับซ้อน (Complexity) เรียบง่ายกว่า ซับซ้อนกว่า (เพราะมี 2 จุดทำงานและหลาย Variant)

การประยุกต์ใช้จริง

Stack ใช้เมื่อ:

  • Function Call Stack (Recursion)
  • Undo/Redo ใน Editor
  • Expression Evaluation (Postfix/Prefix)
  • Backtracking Algorithms
  • Browser History (Back button)

Queue ใช้เมื่อ:

  • Process Scheduling (OS)
  • BFS (Breadth-First Search)
  • Print Queue / Task Queue
  • Message Queue (RabbitMQ, Kafka)
  • Buffer ใน Streaming

สรุป

Stack = LIFO (เหมือนจานซ้อนกัน) ใช้ตอนต้องการ "ย้อนกลับ"
Queue = FIFO (เหมือนคิว排队) ใช้ตอนต้องการ "ลำดับที่มาก่อนได้ก่อน"
เลือกใช้ตามลักษณะปัญหาที่ต้องแก้