Cómo editar una lista enlazada en la programación c
Debido a una lista enlazada en programación C está encadenado juntos haciendo referencia a las posiciones de memoria, la edición se lleva a cabo mediante la modificación de esos lugares de memoria. Por ejemplo, si desea eliminar el tercer elemento de la lista, sólo tiene que esquivar a su alrededor vinculando el segundo elemento para el cuarto punto. El tercer elemento se elimina de manera efectiva (y perdió) por esa operación.
Del mismo modo, puede insertar un elemento en la lista mediante la edición de la próxima 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 le resultará muestra en un programa de lista enlazada Interactivo.
UN PROGRAMA-lista enlazada INTERACTIVA
/ * Un programa de lista enlazada interactiva * // * Dan Gookin, A partir de programación con C para Dummies * / #include #include #include estructura típica {int valor struct típica * siguiente -} - estructura típica * primera estructura típica * actual estructura típica * Menú nueva-int (void) -void añadir (void) -void espectáculo (void) -void eliminar (void) -struct típica * crear (void) - / * La función principal trabaja con entrada onlyEverything demás es manejado por una función * / int main () {int elección = ' 0'- / * obtener el bucle while para girar * / primera = NULL-tiempo (opción =' {opción = menú () Q ') - Interruptor (elección) {case 'S': show () - break-caso "A": add () - romper caso 'R': delete () - romper caso 'Q': romper-default: desglose}} return (0) -} / * Mostrar el menú principal y recoger la entrada * / menú int (void) {int ch-printf ("S) cómo, A) dd, R) etire, Q) uit:") -CH = getchar () -, mientras que (getchar () = ' n'!) / * eliminar el exceso de entrada * / - retorno (toupper (ch)) -} / * Añadir un elemento al final de la lista enlazada * / void add ( void) {if (primera == NULL) / * caso especial para el primer artículo * / {primera = create () - actual = primera} else / * encontrar el último elemento * / {actual = primer tiempo (current- > siguiente) / * último elemento == NULL * / actual = current-> próxima nueva = create () - current-> siguiente = recién / * enlace de actualización * / actual = recién} printf ("Escriba un valor: ") -scanf ("% d ", current-> valor) -current-> siguiente = NULL-tiempo (getchar () = ' n') / * eliminar el exceso de entrada * / -} / * Mostrar 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") - retornables} puts ("Mostrando todos los archivos : ") - actual = primer tiempo (actual) / * último registro == NULL * / {printf (" Record% d:% d n ", cuenta, current-> valor) -actual = current-> next- count ++ -}} / * Eliminar un registro de la lista * / void delete (void) {struct típica * previa- / * guardar récord anterior * / int r, c-si (primera == NULL) / * comprobar si hay lista vacía * / {puts ("No hay registros para eliminar") - Regresar-} puts ("Seleccione un registro para eliminar:") - mostrar () - printf ("Record") -scanf ("% d", r) - while (getchar () = ' n'!) / * eliminar el exceso de entrada * / - c = 1-actual = primera anterior = null- / * primer registro no tiene precedente * / while (c = r!) {if (== actual NULL) / * asegurar que "r" está en rango * / {puts ("Record not found") - Regresar-} anterior = corriente de corriente = current-> próxima-c ++ -} if (== anterior NULL) / * Caso especial para primer registro * / primera = current->-siguiente else / * Punto récord anterior en el siguiente * / previa-> siguiente = current-> próxima printf ("Record% d eliminado. n", r) exento (actual) - / * la liberación de memoria * /} / * Construir una estructura vacía y regresar su dirección * / struct típica * crear (void) {struct típica * aa = (struct típica *) malloc (sizeof (struct típico)) - si (a == NULL) {puts ("Algún tipo de malloc () error") - la salida (1) -} return (a) -}
Ejercicio 1: Si usted tiene el tiempo, escriba el código fuente del Programa-List Vinculado Un Interactivo en su editor. Escribiendo en ayuda a comprender mejor el código. Hay comentarios incluidos para ayudarte a ver lo que está pasando. Construir y ejecutar un par de veces para conseguir la caída de ella.
Tenga en cuenta que de eliminación es una palabra clave C ++ y no se puede utilizar como un nombre de función (o variable) al compilar código C ++.