¿Alguien sabe dónde puedo encontrar un ejemplo de Spaghetti stack escrito en C?pila de espagueti en C
Respuesta
Debe ser algo similar a:
struct stack_item;
struct stack_item
{
stack_item *parent;
void *ptr_data;
};
stack_item *stack_pointer = null;
void push(stack_item *item)
{
if (stack_pointer == null)
item->parent = null;
else
item->parent = cur;
stack_pointer = item;
}
/* like push but doesn't update cur stack item to the one pushed, just add a child */
void push_parallel(stack_item *item)
{
if (stack_pointer == null)
{
stack_pointer = item;
item->parent = null;
}
else
item->parent = stack_pointer;
}
stack_item *pop()
{
if (stack_pointer == null)
{
printf("error: stack is empty.\r\n");
return null;
}
stack_item *current = stack_pointer;
stack_pointer = current->parent;
return current;
}
cuenta que un espaguetis pila es útil cuando se desea mantener las referencias de las cosas que se salen de la pila, que tiene muchas lista enlazada paralelo que terminan en una raíz común. Por lo tanto, debe conservar las referencias del elemento que sale porque debe recorrerlas en un de abajo hacia arriba desde la hoja hasta la raíz y, por supuesto, usar un nodo hoja diferente producirá una lista vinculada diferente que tiene elementos en común con otras listas que comienzan desde otras hojas ...
¿Qué es cur? nunca definiste lo que es ... – Ralph
¿no debería la función push_parallel devolver un puntero a la parte superior de la pila? – Ralph
cur es solo un error debido a stack_pointer que se llamó de una manera diferente, lo arreglé. Para la función push_parallel depende, el hecho es que una pila de espagueti realmente no tiene UNA parte superior de la pila, pero muchos de acuerdo con el lugar desde el que comienzas a visitarla, por lo general, debes preocuparte solo por las referencias externas a la pila. – Jack
- 1. software de visualización de código de espagueti?
- 2. Evitar el código de espagueti en ASP.NET MVC
- 3. Asignación de pila en C
- 4. Cómo evitar el código de espagueti en Javascript
- 5. C++ desbordamiento de pila
- 6. Uso adecuado de pila y pila en C++?
- 7. Explotación de desbordamiento de pila en C
- 8. C# clonar una pila
- 9. C++: Almacenamiento de estructuras en una pila
- 10. Pila excepción de desbordamiento en C# colocador
- 11. Reformateo automático del código de espagueti PHP heredado
- 12. Creación de objetos en la pila/pila?
- 13. Bloquear pila y cola libres en C#
- 14. Bluetooth en C#, ¿Qué pila, qué SDK?
- 15. C++ asignación en la pila actuando curiosamente
- 16. C# combinación de cola de pila
- 17. devolver la variable de pila de C++
- 18. C# Aumentar Tamaño de pila - ¿Es posible
- 19. Objective-C Seguimiento de la pila
- 20. Mejoras para este asignador de pila C++?
- 21. programación C# obtener Seguimiento de la pila
- 22. tamaño de pila de subprocesos en Windows (Visual C++)
- 23. Java y C++ en problema de desenrollado de pila
- 24. ¿Puedes dar un ejemplo de desbordamiento de pila en C++?
- 25. error de desbordamiento de pila en C# set/get
- 26. C/C++ tamaño de pila máximo del programa
- 27. Cómo controlar o evitar un desbordamiento de pila en C++
- 28. ¿Es posible la variable solo de pila en C++?
- 29. Rastreo de pila portátil C++ en la excepción
- 30. Imprimir el seguimiento de pila en C++ (MSVC)?
+1 para una de las estructuras de datos más extrañas, útil casi solo en las pilas de tablas de símbolos para la compilación .. – Jack
@Jack: "casi" aparte, las pilas de espagueti también son muy útil en la implementación de continuaciones. – outis
@outis ¿Puedes explicar los usos de la pila Spaghetti porque no sé por qué se usa esta estructura de datos? – Jerky