Академический Документы
Профессиональный Документы
Культура Документы
La diferencia entre una lista y una cola o pila es que los elementos de la lista pueden insertarse en cualquier lugar , logrando de esta forma que la lista quede ordenada. Solamente trabajaremos con listas simplemente encadenadas que son aquellas que tienen una referencia al elemento siguiente. Cada elemento de la lista ser una estructura autoreferenciada , la cul esta formada por los datos y un puntero a la estructura del mismo tipo. La estructura que utilizaremos es la siguiente: typedef struct lista { }Nodo; int dato; struct lista *prox;
como se puede ver la estructura contiene datos (este ejemplo solo trata un entero) y un puntero a struct lista. Cada elemento de la lista lo representaremos por medio del diagrama de la Figura 1
Donde aux es el puntero al comienzo de la estructura , el 8 representa el dato cargado y la flecha que sale es el punero que va a apuntar al prximo elemento de la lista. La lista comleta quedara representada por la Figura 2
La nica forma de poder recorrer una lista simplemente encadenada es accediendo por el primer elemento (que nunca debe perderse) . El final de la lista se encuentra por que el puntero al prximo elemento apunta a NULL. Bsicamente existen 3 casos distintos para insertar un elemento en una lista. Para el anlisis trataremos cada uno por separado para luego generar una funcin que permita insertar un elemento en la lista. Los 3 casos bsicos son: 1- Insertar un elemento al comienzo de la lista 2- Insertar un elemento al final de la lista 3- Insertar un elemento en algun lugar intermedio. Antes de empezar a analizar cada caso en particular conviene ponernos de acuerdo en cuanto al significado y nomenclatura de los punteros a usar. Siempre , en algn lugar del programa , normalmente en main se debe llevar actualizado el puntero al comienzo de la lista. Vamos a utilizar 4 punteros a saber Inicio Contiene la direccin de comienzo de la lista. Cuando la lista esta vaca vale NULL. aux Contiene la direccin de comienzo del nuevo elemento p,w Son 2 punteros que sirven para recorrer la lista. Para agregar un elemento a la lista se deben seguir los pasos que a continuacin se enumeran: 1- Realizar la solicitud de memoria dinmica por medio del operador new 2- Cargar los datos en la estructura. 3- Enlazar el nuevo elemento con los que existan en la lista 4- Actualizar el puntero al primer elemento.
Si es verdadero entonces es el nico elemento de la lista El inicio de la lista es la direccin del nuevo elemento
elemento contra cada uno de los elementos de la lista. Inicialmente se apunta p al comienzo de la lista y w al proximo elemento. p=Inicio w=p->prox ----------------------------SI (w==NULL) { p->prox=aux aux->prox=w }
p=Inicio w=p->prox MIENTRAS (w !=NULL ) { SI (aux->dato < w->dato ) { p->prox=aux aux->prox=w BREAK } p=w w=p->prox }