Online C Compiler
Ouvrir dans le compilateur

Édition pédagogique en français

Pile en C : principe LIFO

Implémentez push, pop et la consultation du sommet avec des limites explicites.

Ouvrir dans le compilateur

Pile en C : principe LIFO
Implémentez push, pop et la consultation du sommet avec des limites explicites.

Le dernier élément ajouté est le premier retiré. Avec un tableau, top désigne le sommet ou une convention représentant la pile vide. Gardez cette convention identique dans toutes les opérations.

Avant push, vérifiez la capacité ; avant pop ou peek, vérifiez la présence d’un élément. Si possible, séparez le statut d’erreur de la valeur renvoyée pour éviter toute ambiguïté.

Les opérations de base coûtent O(1). Testez remplissage, vidage et alternance. Les piles servent à annuler des actions, analyser des expressions et représenter des appels en attente.

Code source

#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;
}
Ouvrir dans le compilateur

Résultat attendu

Top element: 30
Popped: 30
New top: 20

Questions fréquentes

Pourquoi le code et certains résultats restent-ils en anglais ?

Les mots-clés C, les identifiants, les commentaires du programme et les sorties attendues restent ceux de la version originale pour conserver un code exécutable et des tests cohérents. Les explications et les consignes sont traduites.