Una pila, generalmente hecha de una lista vinculada, encima de un vector.
Por ejemplo, c, c ++, Pascal y muchos otros lenguajes compilados, funcionan directamente en la pila de la CPU.
- Lista: cada llamada de función crea un marco de pila, con todas las variables locales, parámetros, dirección de retorno y un puntero al marco de pila anterior (como un nodo en una lista que apunta al nodo anterior).
- Vector: crece o se reduce dinámicamente. Asigna memoria de forma dinámica, desde el sistema operativo, pero no la devuelve. (Cuando se llama a una función o se inicializa una variable fuera de la pila asignada, el sistema operativo la aumenta).
Nota: con lenguajes de intérprete o lenguajes funcionales profundamente recursivos, puede implementarse de manera ligeramente diferente. Tal vez una lista vinculada, de nodos independientes.
- ¿Qué es un algoritmo para una solución aproximada al problema del vendedor ambulante?
- Cómo mostrar que O (max {f (n), g (n)}) = O (f (n) + g (n))
- Cómo contar inversiones divididas con el algoritmo de clasificación de fusión
- ¿Cuáles son algunos de los buenos problemas de retroceso?
- ¿Abusaron los escritores de los límites de la ecuación 3.10 del CLRS?
Nota 2: las rutinas y los subprocesos rompen este modelo, cuando puede haber múltiples pilas creadas para cada subproceso, y se eliminan cuando se unen / terminan.