Edisi pembelajaran bahasa Indonesia. Kode dan keluarannya tetap seperti aslinya.
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 kompilerKeluaran 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.