Cómo crear una lista vinculada en la programación c

En la programación en C, si desea agregar una segunda estructura de código que ya ha creado, crear una lista enlazada - una serie de estructuras que contienen punteros a la otra. Junto con los datos básicos en una estructura, la estructura contiene un puntero, que contiene la dirección de la siguiente estructura en la lista.

Con un poco de malabarismo inteligente de nombres de puntero, además de un NULL para tapar el final de la lista, que podría terminar con algo similar al código fuente en un primitivo lista enlazada Ejemplo.

Una primitiva Ejemplo-lista enlazada

#include #include #include int main () {struct población {símbolo char [5] -INT cantidad-precio-flotador estructura de la siguiente * -} - estructura de la primera * * estructura de la corriente de estructura de la nueva * - / * crear una estructura en la memoria * / primera = (struct agotadas *) malloc (sizeof (struct de valores)) - Si (primera == NULL) {puts ("Algún tipo de malloc () Error") -exit (1) -} / * datos de estructura Asignar * / corriente = primero-strcpy (corriente-gt; símbolo,"GOOG") -actual-gt; 100 = cantidad de corriente-gt; precio = 801,19 corriente-gt; = NULL próximo nuevo = (struct agotadas *) malloc (sizeof (struct de valores)) - Si (nuevo == NULL) { pone("Otra malloc () error") -exit (1) -} actual-gt; siguiente = new-actual = new-strcpy (corriente-gt; símbolo,"MSFT") -CURRENT-gt; Cantidad = 100-corriente-gt; precio = 28,77-corriente-gt; siguiente = NULL - / * de base de datos de visualización * / puts ("Cartera de inversiones") -printf ("SymboltSharestPricetValuen") -CURRENT = primero-printf ("% -6st% 5DT% .2ft% .2fn", Corriente-gt; símbolo, corriente-gt; cantidad, corriente-gt; precio, corriente-gt; Cantidad * corriente-gt; precio) -CURRENT = corriente-gt; próxima printf ("% -6st% 5DT% .2ft% .2fn", Corriente-gt; símbolo, corriente-gt; cantidad, corriente-gt; precio, corriente-gt; Cantidad * corriente-gt; precio) -Retorno (0) -}

Este código fuente es bastante larga, pero simplemente crea una segunda estructura, ligada a la primera. No deje que la longitud del código fuente te intimide.

Las líneas 13 a 15 declaran los punteros de tres estructura estándar que se requieren para un baile-lista enlazada. Tradicionalmente, son el nombre primero, actualizada y nueva. Juegan en el cuarto miembro de la estructura, al lado, que se encuentra en la línea 11, que es un puntero estructura.

No utilice typedef para definir una nueva variable de estructura cuando se crea una lista enlazada. Una primitiva Linked-List ejemplo no utiliza typedef, así que no es un problema con el código, pero muchos programadores de C utilizar typedef con las estructuras. ¡Ten cuidado!

El nombre de la variable nueva, usada en la línea 15, es una palabra reservada en C ++, así que si quieres ser bilingüe, cambiar el nombre de la variable a new_struct o para algo que no sea la palabra nueva.

Cuando la primera estructura está lleno, línea 30 asigna un puntero NULL al siguiente elemento. Ese valor NULL limita el final de la lista enlazada.

Línea 32 crea una estructura, poniendo su dirección en la nueva variable puntero. La dirección se guarda en la primera estructura en la línea 38. Así es como se mantiene la ubicación de la segunda estructura.

Líneas 40 a 43 se llenan de información para el segundo indicador, la asignación de un valor NULL al siguiente elemento en la línea 43.

La unión se lleva a cabo como se muestran los contenidos de las estructuras. Línea 48 capta la dirección de la primera estructura. A continuación, la línea 54 dirección de captura de la siguiente estructura desde dentro de la primera estructura.

Ejercicio 1: Escriba el código fuente de una primitiva lista enlazada Ejemplo en el editor. Aunque es larga, escribirla, ya que tendrá que editarlo de nuevo más tarde (si no está acostumbrado a que a estas alturas). Generar y ejecutar.

A diferencia de las matrices, estructuras en una lista enlazada no están numeradas. En su lugar, cada estructura está vinculada a la siguiente estructura en la lista. Como siempre que se sepa la dirección de la primera estructura, se puede trabajar a través de la lista hasta el final, que se caracteriza por un valor NULL.

Una primitiva lista enlazada Ejemplo muestra algo de código fuente descuidado con las porciones de código repetido. Cuando vea múltiples declaraciones como esta en su código, usted debe pensar de inmediato “funciones”.

Un ejemplo de la lista enlazada MEJOR

#include #include #include #define ARTÍCULOS 5struct símbolo población {char [5] -INT cantidad-precio-flotador estructura de la siguiente * -} - estructura de la primera * * estructura de la actual estructura-agotadas * nueva estructura agotadas * make_structure (void) fill_structure -void (struct agotadas * a, int c) show_structure -void (struct agotadas * a) -INT main () {int x-para (x = 0 =-xnext nueva corriente = nueva-} fill_structure ( actual, x + 1) -} actual-gt; siguiente = NULL - / * de base de datos de visualización * / puts ("Cartera de inversiones") -printf ("SymboltSharestPricetValuen") = -actual primer tiempo (actual) {show_structure (actual) -actual = corriente gt; de próxima} return (0) -} struct agotadas * make_structure (void) {struct agotadas * aa = (struct agotadas *) malloc (sizeof (struct de valores)) - si (a == NULL) {puts ("Algún tipo de malloc () Error") -exit (1) -} return (a) -} void fill_structure (struct agotadas * a, int c) {printf ("Artículo #% d /% d: n", C, artículos) -printf ("Stock Símbolo: ") -scanf ("% s", A-gt; símbolo) -printf ("Numero de veces compartido: ") -scanf ("%re",&a-gt; cantidad) -printf ("Precio de la acción: ") -scanf ("%F",&a-gt; precio) - show_structure} void (struct agotadas * a) {printf ("% -6st% 5DT% .2ft% .2fn", A-gt; símbolo, a-gt; cantidad, a-gt; precio, a-gt; cantidad * a-gt; precio) -}

La mayoría de las listas enlazadas se crean como se muestra en una mejor Linked-List Ejemplo. La clave es el uso de tres variables de estructura, mostradas en líneas 13 a 15:

  • primero siempre contiene la dirección de la primera estructura de la lista. Siempre.

  • actual contiene la dirección de la estructura que se está trabajando, lleno de datos, o se muestra.

  • nuevo es la dirección de una nueva estructura creada mediante el uso de la función malloc ().

La línea 7 declara la estructura de valores como global. De esta manera, se puede acceder desde las diversas funciones.

Video: 117. Programación en C - Listas - Ejercicio hacer una lista simplemente enlazada para 3 números

El bucle entre las líneas 25 y 39 crea nuevas estructuras, que los une. La estructura inicial es especial, por lo que su dirección se guarda en la línea 30. De lo contrario, una nueva estructura se asigna, gracias a la función make_structure ().

En la línea 35, la estructura anterior es updated- el valor de la corriente no se cambia hasta la línea 36. Antes de que suceda, el puntero en la estructura actual se actualiza con la dirección de la siguiente estructura, nueva.

Video: Lista Enlazada Simple C++

En la línea 40, al final de la lista enlazada está marcada por restablecer el nuevo puntero en la última estructura a un NULL.

El bucle mientras que en la línea 46 muestra todas las estructuras en la lista enlazada. La condición del bucle es el valor del puntero actual. Cuando se encuentra el NULL, el bucle se detiene.

El resto del código que se muestra en una lista enlazada Mejor Ejemplo consta de funciones que son bastante auto-explicativo.

ejercicio 2: Copia el código de la A-Better lista enlazada Ejemplo en el editor. Generar y ejecutar.

Tomar nota de las declaraciones scanf () en la función fill_structure (). Recuerde que el -gt; es la notación “peeker” para un puntero. Para obtener la dirección, debe utilizar la misma variable con una & en la función scanf ().

Artículos Relacionados