Unidad IV: Estructura de Datos Lineales Ing. Marglorie Colina Estructuras de Datos Lineales Listas Enlazadas Son estructuras lineales dinámicas que utilizan punteros para vincular los datos almacenados en forma organizada, estos pueden ser de diferentes tipos de datos. Elementos de una Listas Enlazadas La lista enlazada esta creada por un nodo, este nodo esta compuesto por un área para el dato y otra para el puntero. Nodo Puede ser estructuras o variables Dato Puntero En el ultimo Nodo el puntero es NULO Declaración de un Nodo Para la declaración de u nodo se debe declarar su estructura, en ella se especifican todos los datos o información que se desea almacenar y se declara su puntero para poder enlazarla. Ejemplos de Estructuras de Nodos Struct nodo { int dato; //campo de la Estructura struct nodo * sig; }; Typedef struct nodo Lista; Lista *nodo1, *nodo2, *nodo3; Struct nodo { char nombre[10]; char drireccion[20]; char telef[10]; struct nodo * sig; }; Campos de la Estructura Creación de un nodo Luego de establecida la estructura del nodo es necesario crearlo (solicitar el espacio en memoria). Para solicitar en el espacio en memoria se realizara mediante la palabra reservada new. La sintaxis es la siguiente: variable= new(variable o estructura); Ejemplo: Considerando la siguiente estructura para crear los nodos: nodo1, nodo2 y nodo3. Struct nodo { int dato; struct nodo * sig; }; typedef struct nodo Lista; Lista *nodo1, *nodo2, *nodo3; Se realizaría de la siguiente manera: nodo1= new(nodo); nodo2= new(nodo); nodo3= new(nodo); variable Nombre de la Estructura Guardar la información del Nodo Para guardar la información en el nodo se debe tomar en cuenta en nombre de la variable, el operador “->” y el nombre del campo. Considerando la siguiente estructura: Struct nodo { int dato; struct nodo * sig; }; typedef struct nodo Lista; Se crearon los tres nodos: nodo1= new(nodo); nodo2= new(nodo); nodo3= new(nodo); Lista *nodo1, *nodo2, *nodo3; Para guardar la información seria: printf("\n Ingrese dato: "); scanf("%i", &nodo1->dato); nodo1->sig=0; printf("\n Ingrese dato: "); scanf("%i", &nodo2->dato); nodo2->sig=0; printf("\n Ingrese dato: "); scanf("%i", &nodo3->dato); nodo3->sig=0; Mostrar la información del Nodo Para mostrar la información que contiene el nodo se debe tomar en cuenta en nombre de la variable, el operador “->” y el nombre del campo. Ejemplo : Considerando la siguiente estructura: Struct nodo { int dato; struct nodo * sig; }; typedef struct nodo Lista; Lista *nodo1, *nodo2, *nodo3; Se crearon los tres nodos: nodo1= new(nodo); nodo2= new(nodo); nodo3= new(nodo); Ahora para mostrar la información seria: printf("\nNodo 1: %i", nodo1->dato); printf("\nNodo 2: %i", nodo2->dato); printf("\nNodo 3: %i", nodo3->dato); Enlazar los Nodos Para enlazar los nodos se utiliza el campo del puntero de la estructura igualándolo al nodo con el cual se quiere enlazar. Ejemplo : Considerando la siguiente estructura: Struct nodo { int dato; struct nodo * sig; }; typedef struct nodo Lista; Se crearon los tres nodos: nodo1= new(nodo); nodo2= new(nodo); nodo3= new(nodo); Lista *nodo1, *nodo2, *nodo3; Para enlazarlos se realizaría de la siguiente manera: nodo1->sig=nodo2; nodo2->sig=nodo3;