Árbol Patricia en c++

Practical Algorithm to Retrieval Information Coded in Alphanumeric.
Es un trie en el cual se han eliminado todas las ramas (terminales o no) que degeneran en listas.



la estructura del arbol esta dado por:

struct nodo_arbl
{
char dato;
int vistas;
ro *dir[32];
};

un nodo contiene con 32 punteros pa las diferentes letras mas un contador de visitas, y su dato..
el contadro de visitas se usa para cuando queramos imprir las palabras ..
para ver cuantas veces fue visitado ese nodo, si lo no lo visito mas de 1 ves es evidencia de que es un nodo padre ..
para el cual es ahi donde se aplica la recursividad de en orden ....

descargar:

Descarga

Listas simplemente encadenada

En una lista simplemente encadenada, cada elemento posee apenas información de quien es su sucesor.
Es necesario también almacenar la información del primer elemento de la lista.
Principales problemas:
_Imposibilidad de regresar al elemento anterior.
_Necesidad de guardar información del elemento anterior a fin de realizar algunas operaciones.


Implementación (Estática)


Para simplificar se considerará que los elementos almacenados serán números enteros. Los elementos serán insertados de forma ordenada.
El esquema gráfico abajo muestra el proceso de inserción de un nuevo elemento en una lista encadenada estática. El nuevo elemento será insertado entre el elemento actual y el elemento anterior.

Listas simplemente encadenada estática
Especificación:
1. LE *Inicia_Lista(int N)         // Crea una nueva lista con N elementos
2. void Inserta_Elemento(LE *L, int A)    //Inserta un nuevo elemento A en la posicion correcta de la lista L
3. int Elimina_Elemento(LE *L, int A)      //Elimina el elemento A de la lista L. Si el elemento no existe o la lista está vacía, retorna -1.
4. void Imprime_Lista (LE *L)
5. LE *Vacia_Lista(LE *L)
Descarga

Código:



Implementación (Dinámica)

Por simplicidad los elementos almacenados serán números enteros. Los elementos serán insertados de forma ordenada.
El esquema gráfico abajo muestra el proceso de inserción de un nuevo elemento en una lista encadenada dinámica. el nuevo elemento será insertado entre el elemento actual y el elemento anterior.




Las operaciones ilustradas pueden ser descritas como:
nuevo->prox = actual;
anterior->prox = nuevo;

Especificación:


  1. LE *Inicia_Lista()                                 //Crea una nueva lista
  2. void Inserta_Elemento(LE *L, int A)    //Inserta un nuevo elemento A en la posición correcta de la lista L
  3. int Elimina_Elemento(LE *L, int A)       //Elimina el elemento A de la lista L. Si el elemento no existe o la lista está vacía retorna -1.
  4. void Imprime_Lista (LE *L)
  5. LE *Vacia_Lista(LE *L)

Descarga

Código: