Online C Compiler
Apri nel compilatore

Edizione didattica italiana

Pila in C: struttura LIFO

Implementa push e pop controllando capacità e stato vuoto.

Apri nel compilatore

Pila in C: struttura LIFO
Implementa push e pop controllando capacità e stato vuoto.

L’ultimo elemento inserito è il primo estratto. Con un array, top indica la cima oppure un valore convenzionale per la pila vuota. Mantieni la stessa convenzione in tutte le operazioni.

Prima di push controlla la capacità; prima di pop o peek verifica che esista un elemento. Se possibile separa lo stato di errore dal valore restituito, evitando ambiguità.

Le operazioni fondamentali costano O(1). Prova riempimento, svuotamento e alternanza. Le pile servono ad annullare azioni, analizzare espressioni e rappresentare chiamate in attesa.

Codice sorgente

#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;
}
Apri nel compilatore

Risultato atteso

Top element: 30
Popped: 30
New top: 20

Domande frequenti

Perché il codice e alcuni risultati restano in inglese?

Parole chiave C, identificatori, commenti del programma e output attesi restano quelli originali per preservare codice eseguibile e test coerenti. Spiegazioni e istruzioni sono tradotte.