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;.
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:
- Define una variable temporal
x
. - Asigna espacio para un nuevo nodo.
- Introduce un número entero (código
% d
enscanf
) y lo almacena enx
. - Almacena el valor que se guardó en
x
en el campo de datos del nodo recién asignado. - Almacena la vieja "cabeza" de la lista señalada por la variable '
list
' como un enlace en el nodo recién asignado. - 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.