Sie sind auf Seite 1von 3

Centro Regional Universitario de Veraguas

Facultad de Informtica, Electrnica y Comunicacin


Programacin III - Estructuras de Datos.
Creacin de una lista dinmica encadenada simple

Una lista es una estructura de datos que permite enlazar mediante un ndice (lista
esttica) o mediante un apuntador (lista dinmica) un elemento o nodo, con otro.

Informacin

Informacin
Enlace o
apuntador

Apuntador
nulo

Toda lista debe tener un apuntador al primer nodo de la lista y opcionalmente otro
apuntador al ltimo nodo. El nodo es una estructura (struct) con un campo
apuntador al siguiente nodo (ojo: es apuntador al mismo tipo de la estructura).
Inicio
Informacin

Informacin
Enlace o
apuntador

Apuntador
nulo

A continuacin presentamos el proceso de crear una lista: (referencia:


http://es.ccm.net/faq/2842-la-lista-enlazada-simple )

Declaraciones
Creamos nuestro nuevo tipo de dato para poder declarar variables nodos.
typedef struct nuevotipo {
char
sexo, nombre[25];
float
salario;
int
codigo;
struct nuevotipo *siguiente;
}nodo;

nodo *inicio;

// apuntador al primer nodo de la lista

nodo *ptr;

//apuntador auxiliar al aplicar malloc

nodo *ult

//apuntador al ltimo nodo

El apuntador ult se har siempre igual a ptr, para que apunte al ltimo nodo creado.

Diego Santinateo G.

Pgina 1

Centro Regional Universitario de Veraguas


Facultad de Informtica, Electrnica y Comunicacin
Programacin III - Estructuras de Datos.
Creacin de una lista dinmica encadenada simple

Crear rea de memoria y hacer los enlaces


Se usa la funcin malloc() para crear el rea de almacenamiento del nodo.
ptr = (nodo *) malloc (sizeof (nodo))

Si es la primera vez o primer nodo, entonces: inicio = ptr;


Si no es la primera vez, entonces: ult -> siguiente = ptr;
Es decir, el apuntador siguiente que es apuntado por ult lo hacemos igual a
ptr, para que apunte al nuevo nodo creado con malloc(). As quedaran unidos los
nodos.
Luego, sin importar si es o no la primera vez, debemos hacer que el apuntador
siguiente del nuevo nodo sea null (nulo o no apunte a ningn nodo), porque
cada nuevo nodo es el ltimo nodo en ese momento. Eso significa:
ptr -> siguiente = null;

y hacemos que el apuntador ult apunte al ltimo nodo,

es decir: ult = ptr;


Para concluir se crea un ciclo desde la creacin del nuevo nodo.
Usted puede observar que cada nuevo nodo lo hemos colocado al final de la lista
(creamos una fila o cola). Investigue como hacer una pila es decir adicionar el
nuevo nodo al inicio de la lista. Pila y Fila son dos estructuras de datos, en este
caso dinmicas.

Bsqueda datos de un nodo en la lista


Cuando exista una lista creada en memoria podemos hacer bsqueda de un nodo
que cumpla con criterios previamente establecidos.
En nuestro ejemplo asuma que debe buscar los datos de una persona cuyo cdigo
se captura desde el teclado.
scanf(%d, cod);

//cdigo buscado se compara con ptr->codigo

ptr = inicio;

//ptr recorre cada nodo para revisar ptr->codigo

comparamos cod con ptr->codigo para hacer la bsqueda en el siguiente ciclo:


While ((cod != ptr->codigo)&& (ptr != null))
ptr = ptr-> siguiente

Diego Santinateo G.

// se mueve de un nodo al siguiente

Pgina 2

Centro Regional Universitario de Veraguas


Facultad de Informtica, Electrnica y Comunicacin
Programacin III - Estructuras de Datos.
Creacin de una lista dinmica encadenada simple
if (ptr != null)
// existe un nodo con el cdigo buscado
// hay que desplegar cada dato del nodo, por ejemplo:
Printf(%s, ptr -> nombre);
else
Printf(*** No se encontr la persona buscada);

Diego Santinateo G.

Pgina 3

Das könnte Ihnen auch gefallen