Online C Compiler
Im Compiler öffnen

Deutsche Lernausgabe

Warteschlange in C: das FIFO-Prinzip

Verwalten Sie wartende Elemente mit Einfüge- und Entnahmepositionen.

Im Compiler öffnen

Warteschlange in C: das FIFO-Prinzip
Verwalten Sie wartende Elemente mit Einfüge- und Entnahmepositionen.

Eine Warteschlange liefert Elemente in Eingangsreihenfolge. enqueue fügt hinten hinzu, dequeue entfernt vorne. Unterscheiden Sie die Zustände leer und voll eindeutig von gültigen Indizes.

Eine Ringwarteschlange verwendet freigewordene Positionen erneut, indem Indizes zum Anfang zurückkehren. Ein Zähler oder ein freier Platz unterscheidet voll von leer. Eine einfache lineare Warteschlange kann das Ende erreichen, obwohl vorne Platz frei ist.

Prüfen Sie vor jeder Operation Kapazität und Zustand. Testen Sie eine Folge über das Pufferende hinweg und kontrollieren Sie die Eingangsreihenfolge.

Quellcode

#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;
}
Im Compiler öffnen

Erwartetes Ergebnis

Dequeued: 100
Dequeued: 200

Häufige Fragen

Warum bleiben Code und manche Ausgaben englisch?

C-Schlüsselwörter, Bezeichner, Programmkommentare und erwartete Ausgaben bleiben wie im Original, damit der Code ausführbar und die Tests konsistent bleiben. Erklärungen und Aufgabenstellungen sind übersetzt.