Online C Compiler
Openen in de compiler

Nederlandse leereditie

Stack in C: LIFO-structuur

Implementeer push en pop met controles op capaciteit en lege toestand.

Openen in de compiler

Stack in C: LIFO-structuur
Implementeer push en pop met controles op capaciteit en lege toestand.

Het laatst toegevoegde element wordt het eerst verwijderd. Bij een array wijst top naar de bovenkant of naar een afgesproken lege toestand. Gebruik die afspraak in alle bewerkingen.

Controleer vóór push de capaciteit en vóór pop of peek of er een element is. Scheid zo mogelijk de foutstatus van de terugkeerwaarde om dubbelzinnigheid te vermijden.

Basisbewerkingen kosten O(1). Test vullen, leegmaken en afwisselen. Stacks helpen bij ongedaan maken, expressies analyseren en wachtende aanroepen voorstellen.

Broncode

#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;
}
Openen in de compiler

Verwacht resultaat

Top element: 30
Popped: 30
New top: 20

Veelgestelde vragen

Waarom blijven code en sommige resultaten Engels?

C-sleutelwoorden, namen, programmacommentaar en verwachte uitvoer blijven gelijk aan het origineel om uitvoerbare code en consistente tests te behouden. Uitleg en instructies zijn vertaald.