Nederlandse leereditie
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 compilerVerwacht 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.