En C, una lista enlazada le permite crear una lista sin decidir de antemano el tiempo que sea, y sin perder la memoria por asignar elementos que aún no tenemos . La desventaja es que usted tiene que hacer todo el trabajo de la organización y gestión de la lista en la memoria. Instrucciones
Crear la Estructura de Datos
1
Elige un nombre, a continuación, utilizar typedef para definirlo. Cada lista enlazada tendrá una estructura, incluso si sólo tiene una variable :
typedef struct product_data PRODUCT_DATA , página 2 Definir la estructura. El último elemento debe ser un puntero al tipo que acaba de definir , y nombrado "siguiente" :
product_data struct { int product_code ; int product_size ; PRODUCT_DATA * siguiente ;} ;
3 Asignar dos punteros a esta estructura de datos , inicialización a NULL , que la lista de " cabeza" y "cola ":
PRODUCT_DATA * products_head = NULL; PRODUCT_DATA * products_tail = NULL;
Añadir a la Lista < br > Página 4 Asignar una variable temporal que es un puntero a la estructura de datos :
PRODUCT_DATA * NUEVOSPROD UCTOS ; Página 5 uso malloc () para crear un nuevo elemento, siempre vigilando por un error:
if (( NUEVOSPROD UCTOS = malloc ( sizeof ( PRODUCT_DATA ))) == NULL ) { abort ( ) ;} Página 6 rellenar los campos del nuevo elemento . Establezca su campo " siguiente" para NULL :
NUEVOSPROD UCTOS -> product_code = Código nuevo ; NUEVOSPROD UCTOS -> product_size = newSize ; NUEVOSPROD UCTOS - > siguiente = NULL; Página 7 Establezca la variable de cabeza. Si la variable principal es NULL, este es el primer elemento que se agrega a la lista, así que ponga la cabeza variable para señalar que :
si products_head = NUEVOSPROD UCTOS ; página 8 Prepárese para una diferente ( products_head !) variable. En otros casos , las variables cola apunta al último elemento de la lista , por lo que establezca su siguiente valor para que apunte al nuevo elemento :
más products_tail - > siguiente = NUEVOSPROD UCTOS ; página 9 Actualizar la cola seleccione el nuevo elemento pasado, en ambos casos :
products_tail = NUEVOSPROD UCTOS ;
acceder a la lista
10 Cree otra variable temporal que apunta a la estructura de datos :
* PRODUCT_DATA producto; página 11 establecer la variable temporal para la variable principal :
producto = products_head ; Página 12 bucle a través de los elementos , la comprobación de cada uno y luego establecer la variable temporal a la siguiente puntero para recorrer a la siguiente : mientras
(producto) {if (! productos > product_code = 15 ) { producto = producto - > siguiente ;} } Página 13 Compruebe si la variable es NULL . Si es así , nunca se encontró el material:
si return 0; ( producto ) . De lo contrario, señala el artículo que estabas buscando : devolución de productos -> product_size ;
Limpie su trabajo
14 Desasigne la lista cuando el programa termina , como no todos los sistemas operativos se manejan de forma automática
15
Loop , siempre y cuando la variable de cabeza no es NULL : .
while ( products_head ) {
16 tienda su próxima puntero en la variable cola temporal :
products_tail = products_head - > siguiente ; Página 17 desasignar el elemento :
libre ( products_head ), Página 18 Ajuste el puntero de cabecera al puntero guardó en el paso 4 :
products_head = products_tail ;}