Online C Compiler
Im Compiler öffnen

Deutsche Lernausgabe

Stack in C: das LIFO-Prinzip

Implementieren Sie push, pop und die Abfrage des obersten Elements mit klaren Grenzen.

Im Compiler öffnen

Stack in C: das LIFO-Prinzip
Implementieren Sie push, pop und die Abfrage des obersten Elements mit klaren Grenzen.

Das zuletzt hinzugefügte Element wird zuerst entfernt. Bei einem Array bezeichnet top die Spitze oder nach einer festen Konvention den leeren Stack. Verwenden Sie diese Konvention in allen Operationen.

Prüfen Sie vor push die Kapazität und vor pop oder peek, ob ein Element vorhanden ist. Trennen Sie Fehlerstatus und Rückgabewert möglichst, damit keine Mehrdeutigkeit entsteht.

Die Grundoperationen kosten O(1). Testen Sie Füllen, Leeren und Wechsel zwischen beiden. Stacks dienen unter anderem zum Rückgängigmachen, zur Ausdrucksanalyse und zur Darstellung wartender Aufrufe.

Quellcode

#include <stdio.h>
#define MAX 100

typedef struct {
    int items[MAX];
    int top;
} Stack;

void initStack(Stack *s) { s->top = -1; }
int isFull(Stack *s) { return s->top == MAX - 1; }
int isEmpty(Stack *s) { return s->top == -1; }

void push(Stack *s, int val) {
    if (isFull(s)) {
        printf("Stack Overflow!\n");
        return;
    }
    s->items[++(s->top)] = val;
}

int pop(Stack *s) {
    if (isEmpty(s)) {
        printf("Stack Underflow!\n");
        return -1;
    }
    return s->items[(s->top)--];
}

int peek(Stack *s) {
    if (isEmpty(s)) return -1;
    return s->items[s->top];
}

int main() {
    Stack s;
    initStack(&s);
    push(&s, 10);
    push(&s, 20);
    push(&s, 30);

    printf("Top element: %d\n", peek(&s));
    printf("Popped: %d\n", pop(&s));
    printf("New top: %d\n", peek(&s));
    return 0;
}
Im Compiler öffnen

Erwartetes Ergebnis

Top element: 30
Popped: 30
New top: 20

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.