Академический Документы
Профессиональный Документы
Культура Документы
Una lista es una estructura de datos secuencial. lista enlazada: la posicin del siguiente elemento de la estructura la determina el elemento actual. Es necesario almacenar al menos la posicin de memoria del primer elemento. Adems es dinmica, es decir, su tamao cambia durante la ejecucin del programa. Una lista enlazada se puede definir recursivamente de la siguiente manera: - una lista enlazada es una estructura vaca o - un elemento de informacin y un enlace hacia una lista (un nodo).
IPLEMENTACION Para representar en lenguaje C esta estructura de datos se utilizarn punteros, un tipo de datos que suministra el lenguaje. Se representar una lista vaca con la constante NULL struct cl { char nombre[20]; int edad; }; struct lista { struct cl datos; int clave; struct lista *sig; };
Cuando se crea una lista debe estar vaca. Por tanto para crearla se hace lo siguiente: struct lista *L; L = NULL;
#include <stdio.h> #include <stdlib.h> struct lista { int clave; struct lista *sig; }; /* prototipo */ void insertar(struct lista **L, int elem); int main(void) { struct lista *L; L = NULL; /* Lista vacia */ /* para probar la insercion se han tomado 3 elementos */ insertar(&L, 0); insertar(&L, 1); insertar(&L, -1); return 0; } void insertar(struct lista **L, int elem) { struct lista *actual, *anterior, *nuevo; /* 1.- se busca su posicion */ anterior = actual = *L; while (actual != NULL && actual->clave < elem) { anterior = actual; actual = actual->sig; } /* 2.- se crea el nodo */ nuevo = (struct lista *) malloc(sizeof(struct lista)); nuevo->clave = elem; /* 3.- Se enlaza */ if (anterior == NULL || anterior == actual) { /* inserta al principio */ nuevo->sig = anterior; *L = nuevo; /* importante: al insertar al principio actuliza la cabecera */ } else { /* inserta entre medias o al final */ nuevo->sig = actual; anterior->sig = nuevo; } }