Pergunta
Alguém por favor pode explicar isso?
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 é um código para inserir dados na lista ligada através da linguagem C. O código não está completa, mas eu acho que é o suficiente para o efeito. Por favor, explique a codificação basicamente dessas linhas:
temp=malloc(sizeof(struct node));
e
temp->link = list;
list=temp;.
Solução
malloc()
é usado para alocar memória -. Neste caso para um novo nó
A função addbeg()
definido em seu código faz o seguinte:
- Define um
x
variável temporária. - Aloca espaço para um novo nó.
- Entradas um inteiro (código
%d
parascanf
) e as armazena emx
. - Armazena o valor que foi salvo para
x
no campo de dados do nó recém-alocado. - Lojas a velha "cabeça" da lista apontada pela variável '
list
' como um link no nó recém-alocado. - Define o novo nó para ser o novo chefe da lista armazenada na variável '
list
'.
É uma aplicação muito básica de uma lista ligada ( http://en.wikipedia.org/wiki / Linked_list ) de inteiros.
Outras dicas
primeira linha:. Alocar memória para um único nó adicional da lista ??p>
segunda linha:. Anexar a lista atual como a continuação após este elemento
terceira linha:. Faça o elemento atual no início de uma lista ??p>
temperatura e lista não são visíveis no addbeg, uma vez que está declarado na principal. Eles nem precisam ser passadas para addbeg ou fora declarado de principal (global, eca).
malloc aloca espaço para um novo nó.
temp->link = list
e
list = temp
faz esse novo nó na cabeça de sua lista.