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
pushduplica la capacidad conrealloccuando se llena.popdevuelve y quita el elemento de arriba.mainllena, vacía y libera la pila.
Palabras clave y builtins usados aquí
forifintlongreturnsize_tsizeofstaticstructtypedefvoidwhile
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.
Paso 1 de 2 en Bis; paso 24 de 25 en Punteros y memoria.