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;.
Foi útil?

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:

  1. Define um x variável temporária.
  2. Aloca espaço para um novo nó.
  3. Entradas um inteiro (código %d para scanf) e as armazena em x.
  4. Armazena o valor que foi salvo para x no campo de dados do nó recém-alocado.
  5. Lojas a velha "cabeça" da lista apontada pela variável 'list' como um link no nó recém-alocado.
  6. 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

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

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top