Cómo editar una lista enlazada en la programación c

Video: Listas Simplemente Enlazadas (Programación Estructurada en C)

Debido a una lista enlazada en la programación C está encadenado juntos haciendo referencia a las posiciones de memoria, la edición se realiza modificando las posiciones de memoria. Por ejemplo, si desea eliminar el tercer elemento de la lista, sólo tiene que esquivar a su alrededor mediante la vinculación del segundo elemento para el cuarto punto. El tercer elemento se elimina de manera efectiva (y perdió) por dicha operación.

Del mismo modo, se puede introducir un elemento en la lista editando el siguiente puntero desde el punto anterior.

La mejor manera de alterar los elementos de una lista enlazada es tener un programa interactivo que le permite ver, añadir, insertar, eliminar y editar las diversas estructuras. Tal programa sería muy largo y complejo, por lo que usted encontrará que es mostrado en un programa de lista enlazada interactivo.

Video: Estructura de datos en C - Lista Simple - Parte 3 - Modificar Nodo

Un programa de lista enlazada INTERACTIVA

/ * Un programa de lista enlazada interactiva * // * Dan Gookin, A partir de programación con C para los maniquíes * / # include # include # include struct {int típica estructura típica de valor * próxima -} - estructura típica * primera estructura típica * corriente estructura típica * menú nueva-int (void) -void añadir (void) muestran -void (void) -void eliminar (void) -struct típica * crear (void) - / * La función principal funciona con la entrada onlyEverything lo demás es manejado por una función * / int main) {elección (int = `` - (! elección = / * obtener el bucle while para girar * / primera = NULL, mientras que `Q`) {elección = menú () - interruptor (opción ) {case `S`: show () - break-caso `A`: add () - romper caso `R`: delete () - romper caso `Q`: break-default: rotura -}} return ( 0) -} / * Muestra el menú principal y recoger la entrada * / int menú (void) {int ch-printf ("S) cómo, A) dd, R) emove, Q) uit: ") -CH = getchar () - tiempo (getchar () = `n`) / * eliminar el exceso de entrada * / - retorno (toupper (CH)) -} / * Añadir un elemento al final de la lista enlazada * / add (void) {if (primera == NULL) / * caso especial para el primer elemento * / {primera = create () - actual = primera} else / * encontrar el último elemento * / {actual = primer tiempo (corriente-gt; siguiente) / * último elemento == NULL * / corriente = corriente gt; = próxima nueva creación () - actual-gt; = próxima nuevo- / * actualización de enlace * / corriente = nueva-} printf ("Escriba un valor: ") -scanf ("%re",&! Corriente-gt; valor) -CURRENT-gt; siguiente = NULL-while (getchar () = `n`) / * eliminar el exceso de la entrada * / -} / * Muestra todas las estructuras en la lista enlazada * / void espectáculo (void ) {int count = 1-Si (primera == NULL) / * esta lista está vacía * / {puts ("No hay nada que mostrar") -return-} puts ("Mostrando todos los archivos:") = -actual primer tiempo (actual) / * último registro == NULL * / {printf ("Grabar% d:% dn", Contar, corriente gt; valor) -actual = corriente gt; de próxima recuento ++ -}} / * Eliminación de un registro de la lista * / void delete (void) {struct típica * previa- / * guardar el registro anterior * / int r, c-Si (primera == NULL) / * comprobar la lista vacía * / {puts ("No hay registros para eliminar") -return-} puts ("Elija un registro para eliminar:") -show () - printf ("Grabar: ") -scanf ("%re",&r) -mientras (getchar () = `n`) / * eliminar el exceso de la entrada * / -! c = 1-actual = primera anterior = null- / * primer registro no tiene anterior * / while (c = r) {if (== actual NULL) / * asegurar que `r` está en el rango * / {puts ("Registro no encontrado") -return-} anterior = corriente de corriente = corriente gt; de próxima c ++ -} if (== NULL anterior) / * caso especial para el primer registro * / = primera corriente gt; de próxima persona / * el punto anterior récord en el siguiente-gt anterior * /; siguiente = corriente-gt; próxima printf ("Grabar% d removed.n", R) exento (actual) - / * Liberación de memoria * /} / * Construir una estructura vacía y devuelve su dirección * / struct típica * crear (void) {struct típica * aa = (struct típica *) malloc (sizeof ( struct típica)) - si (a NULL ==) {puts ("Algún tipo de malloc () Error") -exit (1) -} return (a) -}

Ejercicio 1: Si usted tiene el tiempo, el código fuente de un programa interactivo lista enlazada en su editor. Introducir el número le ayuda a comprender mejor el código. Hay comentarios que se incluyen para ayudarle a ver lo que está pasando. Generar y ejecutar un par de veces para conseguir la caída de ella.

Tenga en cuenta que delete es una palabra clave en C ++ y no se puede utilizar como un nombre de función (o variable) al compilar código C ++.

Artículos Relacionados