Pregunta

¿Alguien puede explicar esto?

struct node 
{ 
    int data; 
    struct node * link; 
} 
main() 
{
    struct node *p, *list, *temp; 
    list = p = temp = NULL; 
    ......................... 
    ......................... 
} 

addbeg() 
{ 
    int x;
    temp=malloc(sizeof(struct node));
    scanf("%d", &x); 
    temp->data=x;
    temp->link = list;
    list=temp;
}

Este es un código para ingresar datos en la lista vinculada a través del lenguaje C. El código no está completo, pero creo que es suficiente para ese propósito. Por favor, explique la codificación básicamente estas líneas:

 temp=malloc(sizeof(struct node));

y

 temp->link = list;
 list=temp;.
¿Fue útil?

Solución

malloc () se usa para asignar memoria, en este caso para un nuevo nodo.

La función addbeg () definida en su código hace lo siguiente:

  1. Define una variable temporal x .
  2. Asigna espacio para un nuevo nodo.
  3. Introduce un número entero (código % d en scanf ) y lo almacena en x .
  4. Almacena el valor que se guardó en x en el campo de datos del nodo recién asignado.
  5. Almacena la vieja "cabeza" de la lista señalada por la variable ' list ' como un enlace en el nodo recién asignado.
  6. Establece que el nuevo nodo sea el nuevo encabezado de la lista almacenada en la variable ' list '.

Es una implementación muy básica de una lista vinculada ( http://en.wikipedia.org/wiki / Linked_list ) de enteros.

Otros consejos

primera línea: Asignar memoria para un solo nodo adicional de la lista.

segunda línea: Adjunte la lista actual como la continuación después de este elemento.

tercera línea: hacer que el elemento actual sea el comienzo de una lista.

temp y list no son visibles en addbeg, ya que se declaran en main. Deben pasarse a addbeg o declararse fuera de main (global, yuck).

malloc asigna espacio para un nuevo nodo.

temp->link = list

y

list = temp

hace que ese nuevo nodo sea el encabezado de su lista.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top