typestar

dynamic_stack.c en C

Una pila de enteros que crece, respaldada por malloc y realloc.

#include <stdio.h>
#include <stdlib.h>

typedef struct {
    int *items;
    size_t len;
    size_t cap;
} Stack;

static void push(Stack *s, int value) {
    if (s->len == s->cap) {
        s->cap = s->cap ? s->cap * 2 : 4;
        s->items = realloc(s->items, s->cap * sizeof(int));
    }
    s->items[s->len++] = value;
}

static int pop(Stack *s) {
    return s->len ? s->items[--s->len] : 0;
}

int main(void) {
    Stack s = {0};
    for (int i = 1; i <= 10; i++)
        push(&s, i * i);
    long total = 0;
    while (s.len)
        total += pop(&s);
    printf("sum of squares: %ld\n", total);
    free(s.items);
    return 0;
}

Cómo funciona

  1. push duplica la capacidad con realloc cuando se llena.
  2. pop devuelve y quita el elemento de arriba.
  3. main llena, vacía y libera la pila.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
32
Caracteres a escribir
549
Tokens
218
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 125 segundos.

Escribe este fragmento

Paso 1 de 2 en Bis; paso 24 de 25 en Punteros y memoria.

← Anterior Siguiente →