Online C Compiler
Buka di kompiler

Edisi pembelajaran bahasa Indonesia. Kode dan keluarannya tetap seperti aslinya.

Queue dalam C: prinsip FIFO

Kelola elemen yang menunggu menggunakan posisi penambahan dan pengambilan.

Buka di kompiler

Queue dalam C: prinsip FIFO
Kelola elemen yang menunggu menggunakan posisi penambahan dan pengambilan.

Queue mengeluarkan elemen sesuai urutan kedatangan. enqueue menambah di belakang dan dequeue mengambil dari depan. Bedakan keadaan kosong dari penuh; indeks yang valid tidak boleh sekaligus berarti data tidak ada.

Circular queue menggunakan kembali posisi kosong dengan mengembalikan indeks ke awal buffer. Penghitung elemen atau satu posisi cadangan membantu membedakan penuh dan kosong. Queue linear sederhana dapat kehabisan ruang di ujung meskipun bagian awal kosong.

Periksa keadaan sebelum setiap operasi. Jalankan rangkaian operasi yang melewati ujung buffer dan pastikan urutan kedatangan tetap dipertahankan.

Kode C

#include <stdio.h>
#define SIZE 5

typedef struct {
    int items[SIZE];
    int front;
    int rear;
} Queue;

void initQueue(Queue *q) {
    q->front = -1;
    q->rear = -1;
}

int isFull(Queue *q) { return q->rear == SIZE - 1; }
int isEmpty(Queue *q) { return q->front == -1 || q->front > q->rear; }

void enqueue(Queue *q, int val) {
    if (isFull(q)) {
        printf("Queue Full!\n");
        return;
    }
    if (q->front == -1) q->front = 0;
    q->items[++(q->rear)] = val;
}

int dequeue(Queue *q) {
    if (isEmpty(q)) {
        printf("Queue Empty!\n");
        return -1;
    }
    return q->items[(q->front)++];
}

int main() {
    Queue q;
    initQueue(&q);
    enqueue(&q, 100);
    enqueue(&q, 200);
    enqueue(&q, 300);

    printf("Dequeued: %d\n", dequeue(&q));
    printf("Dequeued: %d\n", dequeue(&q));
    return 0;
}
Buka di kompiler

Keluaran yang diharapkan

Dequeued: 100
Dequeued: 200

Pertanyaan umum

Mengapa kode dan keluarannya tetap dalam bahasa Inggris?

Kata kunci, pengenal, dan teks yang diperiksa tes dipertahankan agar program tidak berubah. Penjelasan dan kontrol telah diterjemahkan.