C Academy · บทเรียน

สแตกและคิว

ทำความเข้าใจโครงสร้างข้อมูลสแตก (LIFO) และคิว (FIFO) รวมถึงการประยุกต์ใช้

บทเรียน 2 จาก 310 ขั้นตอน

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

สแตกและคิวใน C

สแตกและคิวคือโครงสร้างข้อมูลเชิงเส้นที่ใช้จัดเก็บและจัดการข้อมูล

ในบทเรียนนี้ คุณจะได้เรียนรู้:

  • สแตกทำงานอย่างไร (LIFO - เข้าหลัง ออกก่อน)
  • คิวทำงานอย่างไร (FIFO - เข้าก่อน ออกก่อน)
  • วิธีนำสแตกและคิวไปใช้งานใน C
สแตกและคิว — ภาพประกอบ 1

สแตกคืออะไร

สแตกทำงานตามหลักการ เข้าหลัง ออกก่อน (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 กัน

สแตกและคิว — ภาพประกอบ 10
เริ่มต้นได้ฟรี

เรียนรู้ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ลิงก์ลิสต์
  2. สแตกและคิว
  3. ต้นไม้และกราฟ
← กลับไปที่ C Academy