Saltar al contenido

Modelo por capas

Longitud, capacidad y la regla de crecimiento

Un array dinámico es un array que crece solo. Guarda dos números:

  • longitud: cuántos valores tiene;
  • capacidad: cuántos caben en el bloque reservado.

Mientras longitud sea menor que capacidad, agregar escribe en la siguiente posición libre: una escritura. Cuando longitud = capacidad, primero crece: reserva un bloque nuevo, copia los valores y libera el viejo.

La decisión importante es la regla de crecimiento: cuánto más grande es el bloque nuevo. Las dos que vas a comparar:

  • sumar uno: capacidad nueva = capacidad + 1;
  • duplicar: capacidad nueva = 2 × capacidad.

En la figura, un array lleno de capacidad 4 y el bloque nuevo que resulta con cada regla.

Un array lleno y las dos reglas de crecimientoTres filas de celdas. Arriba, un array con 12, 7, 31 y 9, longitud 4 y capacidad 4: lleno. En medio, el bloque nuevo con la regla de sumar uno: capacidad 5, con cinco celdas y una libre. Abajo, con la regla de duplicar: capacidad 8, con ocho celdas y cuatro libres. Las celdas libres tienen borde punteado.Lleno: longitud 4 = capacidad 4. El siguiente valor no cabe127319Sumar uno: capacidad 4 + 1 = 5, queda un sitio libre127319Duplicar: capacidad 2 × 4 = 8, quedan cuatro sitios libres127319
El mismo array lleno, después de crecer con cada regla (antes de escribir el valor nuevo). Borde punteado: sitio reservado sin valor.
Un array dinámico tiene longitud 12 y capacidad 12, y duplica al crecer. Tras agregar un valor, ¿cuánto valen longitud y capacidad?