สแตกและคิว
ทำความเข้าใจโครงสร้างข้อมูลสแตก (LIFO) และคิว (FIFO) รวมถึงการประยุกต์ใช้
สแตกและคิว เป็นบทเรียน C Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C Academy มีบทเรียนทั้งหมด 3 บทเรียน
สแตกและคิวใน C
สแตกและคิวคือโครงสร้างข้อมูลเชิงเส้นที่ใช้จัดเก็บและจัดการข้อมูล
ในบทเรียนนี้ คุณจะได้เรียนรู้:
- สแตกทำงานอย่างไร (LIFO - เข้าหลัง ออกก่อน)
- คิวทำงานอย่างไร (FIFO - เข้าก่อน ออกก่อน)
- วิธีนำสแตกและคิวไปใช้งานใน C

สแตกคืออะไร
สแตกทำงานตามหลักการ เข้าหลัง ออกก่อน (LIFO)
การดำเนินการ:
- เพิ่ม: เพิ่มองค์ประกอบไว้ด้านบน
- นำออก: นำองค์ประกอบด้านบนออก
- ดูด้านบน: ดูองค์ประกอบด้านบนโดยไม่นำออก
ตัวอย่าง: การนำสแตกไปใช้งาน
โปรแกรมนี้สาธิตการดำเนินการของสแตกโดยใช้อาร์เรย์
#include <stdio.h>
#define MAX 5
int stack[MAX], top = -1;
void push(int value) {
if (top == MAX - 1) {
printf("Stack Overflow\n");
} else {
stack[++top] = value;
}
}
int pop() {
if (top == -1) {
printf("Stack Underflow\n");
return -1;
} else {
return stack[top--];
}
}
int main() {
push(10);
push(20);
printf("Popped: %d\n", pop());
return 0;
}คิวคืออะไร
คิวทำงานตามหลักการ เข้าก่อน ออกก่อน (FIFO)
การดำเนินการ:
- นำเข้าคิว: เพิ่มองค์ประกอบไว้ท้ายคิว
- นำออกจากคิว: นำองค์ประกอบออกจากหัวคิว
- ดูหัวคิว: ดูองค์ประกอบที่หัวคิวโดยไม่นำออก
ตัวอย่าง: การนำคิวไปใช้งาน
โปรแกรมนี้สาธิตการดำเนินการของคิวโดยใช้อาร์เรย์
#include <stdio.h>
#define MAX 5
int queue[MAX], front = -1, rear = -1;
void enqueue(int value) {
if (rear == MAX - 1) {
printf("Queue Overflow\n");
} else {
if (front == -1) front = 0;
queue[++rear] = value;
}
}
int dequeue() {
if (front == -1 || front > rear) {
printf("Queue Underflow\n");
return -1;
} else {
return queue[front++];
}
}
int main() {
enqueue(10);
enqueue(20);
printf("Dequeued: %d\n", dequeue());
return 0;
}คิววงกลม
คิววงกลมแก้ข้อจำกัดของคิวทั่วไปด้วยการนำพื้นที่ว่างกลับมาใช้ใหม่
การดำเนินการยังคงเหมือนเดิม แต่จะวนกลับไปใช้ต้นอาร์เรย์
ตัวอย่าง: คิววงกลม
โปรแกรมนี้สาธิตการนำคิววงกลมไปใช้งาน
#include <stdio.h>
#define MAX 5
int queue[MAX], front = -1, rear = -1;
void enqueue(int value) {
if ((rear + 1) % MAX == front) {
printf("Queue Overflow\n");
} else {
if (front == -1) front = 0;
rear = (rear + 1) % MAX;
queue[rear] = value;
}
}
int dequeue() {
if (front == -1) {
printf("Queue Underflow\n");
return -1;
}
int data = queue[front];
if (front == rear) {
front = rear = -1;
} else {
front = (front + 1) % MAX;
}
return data;
}
int main() {
enqueue(10);
enqueue(20);
printf("Dequeued: %d\n", dequeue());
return 0;
}การประยุกต์ใช้สแตกและคิว
สแตกใช้สำหรับ:
- การจัดการการเรียกใช้ฟังก์ชัน (การเรียกซ้ำ)
- การดำเนินการยกเลิก/ทำซ้ำ
- การประเมินนิพจน์
คิวใช้สำหรับ:
- การจัดตารางงานในระบบปฏิบัติการ
- การจัดการคำขอในเซิร์ฟเวอร์เว็บ
- การถ่ายโอนข้อมูลในเครือข่าย
สรุป
ในบทเรียนนี้ คุณได้เรียนรู้:
- สแตกและคิวทำงานอย่างไร
- วิธีนำการดำเนินการของสแตกและคิวไปใช้งาน
- การประยุกต์ใช้สแตกและคิว
ถัดไป เราจะสำรวจต้นไม้และกราฟใน C กัน

เรียนรู้ C ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 39
- บทเรียน
- 144
คำถามที่พบบ่อย
บทเรียน “สแตกและคิว” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “สแตกและคิว” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “สแตกและคิว”
ทำความเข้าใจโครงสร้างข้อมูลสแตก (LIFO) และคิว (FIFO) รวมถึงการประยุกต์ใช้ คุณปฏิบัติ C Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน
บทเรียน “สแตกและคิว” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C Academy นี้ได้ไหม
ได้ บทเรียน C Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ลิงก์ลิสต์
- สแตกและคิว
- ต้นไม้และกราฟ