Café y Código

2. Estructuras lineales (hechas por vos)

El objetivo es no depender solo de ArrayList o LinkedList del JDK: programar vos mismo para ver cómo se enlazan los nodos en memoria.

Referencia = «puntero» en Java

nodo.siguiente = nuevoNodo; no copia un objeto entero: asigna una referencia. Dos variables pueden apuntar al mismo objeto; si mutás por una, la otra «ve» el cambio.

cabecera
   │
   ▼
┌──────┐    ┌──────┐    ┌──────┐
│  3   │───▶│  7   │───▶│  1   │───▶ null
└──────┘    └──────┘    └──────┘

Arreglos estáticos y dinámicos

Un T[] tiene tamaño fijo al crearlo. Un arreglo dinámico (como el corazón de ArrayList) mantiene capacidad y, al llenarse, copia a otro bloque más grande (coste amortizado O(1) por inserción al final).

Idea de crecimiento (esquema)
JAVA
1 // Pseudocódigo conceptual
2 void add(T x) {
3 if (size == capacity) {
4 capacity *= 2;
5 elementos = Arrays.copyOf(elementos, capacity);
6 }
7 elementos[size++] = x;
8 }

Lista enlazada: clase Nodo

Lista simplemente enlazada (enteros)
JAVA
1 public class Nodo {
2 int valor;
3 Nodo siguiente;
4
5 public Nodo(int valor) {
6 this.valor = valor;
7 }
8 }
9
10 public class ListaEnlazada {
11 private Nodo cabeza;
12
13 public void agregarAlFinal(int v) {
14 Nodo n = new Nodo(v);
15 if (cabeza == null) {
16 cabeza = n;
17 return;
18 }
19 Nodo cur = cabeza;
20 while (cur.siguiente != null) {
21 cur = cur.siguiente;
22 }
23 cur.siguiente = n;
24 }
25 }

Diseño visual: dibujá en papel la cabeza y cada flecha antes de depurar; cuando el depurador muestre cabeza → Nodo@1a2b, es exactamente ese grafo de referencias.

Pila (Stack) y cola (Queue)

PILA (LIFO)          push 5    push 2    pop → 2
        ┌───┐     ┌───┐     ┌───┐
        │   │     │ 5 │     │ 5 │
        └───┘     └───┘     └───┘

Pila: LIFO — último en entrar, primero en salir. Cola: FIFO. Podés implementarlas con nodos y punteros a cabeza/cola; documentá qué pasa en estructura vacía (EmptyStackException, NoSuchElementException o valores opcionales).

Interfaz mínima (contrato)
JAVA
1 public interface Pila<T> {
2 void push(T item);
3 T pop();
4 T peek();
5 boolean isEmpty();
6 }
Ko-fi
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.