Bom estou estudando AED agora e me apareceu uma grande duvida em Listas, é o seguinte eu não consigo entender como funciona para inserir valores em uma lista…
Eu estou usando o seguinte Algoritimo para inserir valores só que sem entender:
if (ListaVazia() ){ //
primeiro = ultimo = n;
}
else{
n.prox = primeiro;
primeiro = n;
}
totalNos++;
}
bom oque eu faço é o seguinte:
1 - testo a lista, se ela estiver vazia, o primeiro e o ultimo recebe o n.
2 - senão n.prox recebe o primeiro;
primeiro recebe o n; // [color=green]aqui está a duvida!! porque n.prox recebr o primeiro e dps o primeiro recebe n? [/color]
O segredo é que esse código está inserindo no início da lista.
Vou tentar mostrar como está a lista antes e depois, veja se dá para entender o que aconteceu
(não consegui pensar em uma forma de representar então seja paciente
)
No lado esquerdo estão os ponteiros, no lado direito os objetos nós.
Antes:
primeiro ------ aponta para -----> NO1
NO1.prox ------ aponta para -----> NO2
NO2.prox ------ aponta para -----> NO3
Depois:
primeiro ------ aponta para -----> NOVO_NÓ //primeiro aponta para o novo nó
NOVO_NÓ.prox -- aponta para -----> NO1 //n.prox aponta para o que era antes o primeiro nó
NO1.prox ------ aponta para -----> NO2
NO2.prox ------ aponta para -----> NO3
Acho que complementando o que o gomesrod disse, vc deve estar estudando uma estrutura de pilha de dados(Last in First Out), então todo elemento novo que vc incluir será o primeiro dessa pilha e assim sucessivamente, por isso vc atribui ao ultimo o valor do primeiro item a ser inserido.
Acredito que se fosse uma fila de estrutura de dados, o seu último sempre seria o último elemento que vc inseriu na estrutura.