Podrías tener una lista enlazada o un árbol.
En el caso de la lista, las estructuras van todas en orden, una detrás de otra... luego para añadir un elemento en su posición concreta es tan sencillo como recorrer la lista hasta encontrar su posición e insertar ahí el elemento.
En el caso de los árboles, la estructura lógica se complica ligeramente. Cada nodo tiene dos punteros, uno en el que se encuentran los nodos más pequeños y otro para los nodos más grandes.
Si no hace falta balancear el árbol, el proceso para rellenar el árbol es bastante sencillo.
Cada una de estas dos opciones tiene su teoría y sus trucos por detrás, echa un vistazo por internet y verás que información no te va a faltar. Si te escribiese aquí todo lo relacionado sobre el tema más de uno acababa dormido
Un saludo.
En el caso de la lista, las estructuras van todas en orden, una detrás de otra... luego para añadir un elemento en su posición concreta es tan sencillo como recorrer la lista hasta encontrar su posición e insertar ahí el elemento.
Código (c) [Seleccionar]
// Ejemplo de una estructura preparada para gestionar listas enlazadas
struct nodo
{
int valor;
struct nodo* siguiente; // puntero al siguiente elemento de la lista, null si es el ultimo.
};
En el caso de los árboles, la estructura lógica se complica ligeramente. Cada nodo tiene dos punteros, uno en el que se encuentran los nodos más pequeños y otro para los nodos más grandes.
Si no hace falta balancear el árbol, el proceso para rellenar el árbol es bastante sencillo.
Código (c) [Seleccionar]
// Ejemplo de una estructura preparada para ser utilizada en arboles
struct nodo
{
int valor;
struct nodo* izquierdo; // puntero a nodos de menor valor
struct nodo* derecho; // puntero a nodos de mayor valor
};
Cada una de estas dos opciones tiene su teoría y sus trucos por detrás, echa un vistazo por internet y verás que información no te va a faltar. Si te escribiese aquí todo lo relacionado sobre el tema más de uno acababa dormido
Un saludo.