Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

viciado

Lista encadeada - Teoria

Recommended Posts

Eu tenho algumas duvidas sobre teoria de lista encadeada.

Nesse codigo (nao coloquei a parte da estrutura)

 

aux->info = value;
aux->next = *list;
aux->prev = NULL:
(*list)->prev = aux;
*list = aux;

Veja se estou correto:

 

aux->info = value;
Pega o "value" na variavel aux

 

aux->next = *list;
Ponteiro next da variavel aux apontando para *list (O que é list ? É toda a lista aux->next aponta para toda a lista ?)

 

aux->prev = NULL;
Como está inserindo o "value" no inicio a variavel aux->prev tem q ser NULL

 

(*list)->prev = aux;
*list = aux;
Essa parte eu não entendi

 

O que eu não entendo é os ponteiros: *list, aux (ou seja sem ter next ou prev)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Viciado, temos N tópicos sobre listas encadeadas.

Mas não tem problema.

Uma vez fiz uma imagem para explicar o conceito de lista ligada a um membro:

http://img39.imageshack.us/img39/9830/linkedlist.png

 

A única diferença é que a lista duplamente encadeada tem um campo que aponta para o próximo nó e outro que aponta para o nó que vem exatamente antes.

 

Por exemplo:

estrutura mNo: #declaração da estrutura de uma lista duplamente encadeada
    int valor
    mNo proximo, anterior

## ... muito código, onde declara-se a variável 'lista' do tipo mNo ...

aux = mNo
aux.valor = 10 # Move o valor 10 a aux
aux.proximo = lista # estamos adicionando aux à cabeça da lista
aux.anterior = NULL # não há nada antes da cabeça da lista
lista.anterior = aux # se aux é a cabeça da nova lista, aux vem antes da cabeça da lista antiga
lista = aux # atualizamos a lisa, isto é, sem essa linha, 'lista' representaria a lista de elementos após aux

## .. mais código ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Viciado, temos N tópicos sobre listas encadeadas.

Mas não tem problema.

Uma vez fiz uma imagem para explicar o conceito de lista ligada a um membro:

http://img39.imageshack.us/img39/9830/linkedlist.png

 

A única diferença é que a lista duplamente encadeada tem um campo que aponta para o próximo nó e outro que aponta para o nó que vem exatamente antes.

 

Por exemplo:

estrutura mNo: #declaração da estrutura de uma lista duplamente encadeada
    int valor
    mNo proximo, anterior

## ... muito código, onde declara-se a variável 'lista' do tipo mNo ...

aux = mNo
aux.valor = 10 # Move o valor 10 a aux
aux.proximo = lista # estamos adicionando aux à cabeça da lista
aux.anterior = NULL # não há nada antes da cabeça da lista
lista.anterior = aux # se aux é a cabeça da nova lista, aux vem antes da cabeça da lista antiga
lista = aux # atualizamos a lisa, isto é, sem essa linha, 'lista' representaria a lista de elementos após aux

## .. mais código ...

 

Ok. Então quando estou atribuindo a uma variável a variavel *list (variavel = *list) estou ligando essa variavel ao inicio da lista "list" ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.