Online C Compiler
Abrir en el compilador

Edición didáctica en español. El código y sus salidas conservan el original.

Pila en C: último en entrar, primero en salir

Implementa push, pop y consulta del tope con límites explícitos.

Abrir en el compilador

Pila en C: último en entrar, primero en salir
Implementa push, pop y consulta del tope con límites explícitos.

Una pila sigue el orden LIFO: el último elemento insertado es el primero que se retira. En una implementación con array, top identifica la posición superior o una convención que representa la pila vacía.

Antes de push, comprueba la capacidad; antes de pop o peek, comprueba que exista un elemento. No devuelvas un valor de datos ambiguo para señalar un error: utiliza un estado separado cuando el diseño lo permita.

Las operaciones básicas cuestan O(1). Prueba llenar la pila, vaciarla y alternar inserciones y extracciones. Las pilas son útiles para deshacer acciones, analizar expresiones y representar llamadas pendientes.

Código C

#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;
}
Abrir en el compilador

Salida esperada

Top element: 30
Popped: 30
New top: 20

Preguntas frecuentes

¿Por qué el código y la salida siguen en inglés?

Las palabras clave, los identificadores y los textos que verifican las pruebas se conservan para no cambiar el programa. Las explicaciones y los controles están traducidos.