Pila en C (stack): ejercicio resuelto con push, pop y peek

  2 minutos

Si buscas pila en C ejercicio resuelto, aquí tienes una implementación clara de stack con validaciones.

Implementa una pila de enteros con:

  • push,
  • pop,
  • peek,
  • funciones de comprobacion de estado.
#include <stdio.h>

#define CAP 5

typedef struct {
    int data[CAP];
    int top;
} Stack;

void init(Stack *s) { s->top = -1; }
int is_empty(Stack *s) { return s->top < 0; }
int is_full(Stack *s) { return s->top == CAP - 1; }

int push(Stack *s, int x) {
    if (is_full(s)) return 0;
    s->data[++s->top] = x;
    return 1;
}

int pop(Stack *s, int *out) {
    if (is_empty(s)) return 0;
    *out = s->data[s->top--];
    return 1;
}

int peek(Stack *s, int *out) {
    if (is_empty(s)) return 0;
    *out = s->data[s->top];
    return 1;
}

int main(void) {
    Stack s;
    int v;

    init(&s);
    push(&s, 10);
    push(&s, 20);
    push(&s, 30);

    peek(&s, &v); printf("Top: %d\n", v);
    pop(&s, &v);  printf("Pop: %d\n", v);
    peek(&s, &v); printf("Top: %d\n", v);

    return 0;
}
Top: 30
Pop: 30
Top: 20

Prueba estos dos escenarios en la misma ejecución:

  1. hacer pop sobre pila vacía (underflow),
  2. intentar push cuando top == CAP - 1 (overflow).

Así validas que las funciones devuelven 0 en error sin corromper estado.

  • No controlar overflow al hacer push.
  • No controlar underflow al hacer pop.
  • Olvidar inicializar top en -1.
  • Incrementar/decrementar top en el orden incorrecto y leer fuera de rango.
  • push, pop y peek: O(1).
  • Espacio total: O(n) por el array de capacidad fija CAP.

Las pilas aparecen en parseo, deshacer/rehacer y evaluacion de expresiones.

Si quieres una ruta completa con progresión real de dificultad:

Sí. Trabaja patrones que aparecen mucho en prácticas, entrevistas técnicas y evaluaciones de programación en C.

En Programación en C en 100 ejercicios resueltos y en Ejercicios C. Kindle Unlimited: Ver en Amazon.

Empieza con entradas pequeñas, prueba casos límite (vacío, un elemento y capacidad máxima) y luego reescribe la solución sin copiarla.