Gostaria de saber se alguem teria alguma coisa relacionada ao assunto,que explicasse passo a passo como funciona este processo,e um exemplo se possivel.
Obrigado.Paulo
Gostaria de saber se alguem teria alguma coisa relacionada ao assunto,que explicasse passo a passo como funciona este processo,e um exemplo se possivel.
Obrigado.Paulo
Cara,
lista encadeada é uma estrutura de dados (TAD), onde vc define a estrutura e a ligação entre uma “celula”(Objeto instanciado pela estrutura) e outra é feita atravéz de um apontador(Ponteiro), que é uma variavel aonde se armazena o endereçõ de memoria para a proxima estrutura!
Vou ficar de devendo o material, pois estudei isso a 4 anos atraz quando entrei para a faculdade! Só tenho o materia impresso! As linguagens de programação aonde as listas são mais comumente utilizadas são Pascal e C++!!!
Flow!!
De uma olhadinha aqui. Qualquer coisa me avise.
Abraço,
Fábio Heleno
Primeiro criamos o registro para armazenar os dados da lista:
REG_LIST:REGISTRO
LETRA:CHAR
PROXIMO:INTEIRO
FIM_REGISTRO
Depois declaramos a lista propriamente dita:
LISTA:MATRIZ[N]DE REG_LISTA
Atravessamento:
INICIO
ARGUMENTOS
LISTA:MATRIZ[N] DE REG_LISTA
N:INTEIRO
DESCRITOR:INTEIRO
VARIÁVEIS
REG_LISTA:REGISTRO
LETRA:CHAR
PROXIMO:INTEIRO
FIM_REGISTRO
CONT:INTEIRO
PROCEDA ATRAVESSAMENTO_ENCADEADA
SE DESCRITOR = NULO
MOSTRE("LISTA VAZIA!!!")
SENÃO
CONT:=DESCRITOR
ENQUANTO CONT <> NULO
MOSTRE(LISTA[CONT].LETRA)
CONT:= LISTA[CONT].PROXIMO
FIM_ENQUANTO
FIM-SE
FIM
Veja se consegui entender, pois esse é o menor módulo, se entender lhe passo o restante.
Abraço,
Fábio Heleno
Cara,
só completando tudo que foi dito!!! A ideia da Lista encadeada é vc ter uma especie de vetor que crece dinamicamente!! Vc não define o numero de posições que ele tem, a medida que vc precisa de um novo objeto na memoria ele vai alocando e usando! Ao contrario dos vetores que vc define um tamanho e utiliza somente esse tamanho!
No java temos a classe Vector que simula esse tipo de lista! Aonde a cada elemento que vc coloca na memoria ele vai crescendo de acordo com seus elementos! Esse é a utilidade da Lista encadeada: Ser um vetor de estruturas dinamico e não estatico como um vetor comun!
[quote=“AndersonAugusto”]Cara,
só completando tudo que foi dito!!! A ideia da Lista encadeada é vc ter uma especie de vetor que crece dinamicamente!! Vc não define o numero de posições que ele tem, a medida que vc precisa de um novo objeto na memoria ele vai alocando e usando! Ao contrario dos vetores que vc define um tamanho e utiliza somente esse tamanho!
No java temos a classe Vector que simula esse tipo de lista! Aonde a cada elemento que vc coloca na memoria ele vai crescendo de acordo com seus elementos! Esse é a utilidade da Lista encadeada: Ser um vetor de estruturas dinamico e não estatico como um vetor comun![/quote]
Eu discordo disso.
Nos vetores, a próxima posição é calculada somando-se o tamanho do tipo de dados do vetor (1 byte, por exemplo) à posição de memória atual. E o inverso para o elemento anterior. Numa lista, cada posição tem um ponteiro ou referência para a próxima posição (talvez anterior também, depende da lista).
Ou seja, num vetor de bytes de 20 posições, se a primeira posição ocupasse a posição 0010 da memória, a última ocuparia 0030.
Não há uma referência entre as posições.
Numa lista, as posições da lista podem estar (e certamente estão) em posições de memória completamente isoladas, como 0015 e 4321.
Nem Vector nem ArrayList simulam lista encadeada. A única collection que sei que faz isso é LinkedList (e é duplamente encadeada).
Mas você pode criar uma lista usando classe auto-referenciais, onde a classe tem como atributo um objeto da própria classe.
Me avisem se compliquei ou falei alguma besteira
Ahh sim, eu me referi a lista dinâmica. O exemplo parece lista estática.
Não cara!!
Eu tava falando que se vc define um vetor de 5 posições vc conseguira colocar 5 elementos nele, em uma lista encadeada vc nao define as 5 posições a medida que vc vai usando ele vai alocando as posições, podendo chegar a ate quando a memoria aguentar!
Entendeu?
Tudo bem, mas é que você disse que um Vector simula lista encadeada, sendo que no Vector você tem que dizer quantas posições quer, apesar dele pode crescer além disso.
É que o Vector cresce de tanto em tando!
Na verdade ele nao representa bem uma lista encadeada mesmo! Mas ele crece sozinho!
É !!!
A ideia é essa mesmo!!!
Trocar ideias para fixar conceitos!!!
Valew!!!
Ok!
hehehe… boa essa de vocês dois! :razz:
Sugestões:
Você usa realmente LinkedList para implementar, dará certo da mesma forma, pois já fiz com base nele, e é de facil implementação, apesar de que se for para entendimento acho mais adequado o outro modo;
Contrói toda uma estrutura de Lista Encadeada na unha, desta maneira você toma conhecimento pleno sobre a funcionalidade, sentido do processos e resultado de uma lista deste tipo. O único porém é quanto sua implementação, que é um pouco trabalhosa, como pode-se ver um exemplo que passei anteriormente, o Algoritmo de Registro e de Atravessamento, que já passam a idéia de como é.
Abraço,
Fábio Heleno
Pessoal,
Na minha opinião, o que a lista encadeada tem como vantagem em relação ao vetor não é o fato de não ser estático, como já foi dito pode se trabalhar com vetores sem ter a lista estática (também podemos realocar o vetor), mas sim quando queremos inserir/remover elementos do meio da lista. No caso dos vetores, para estas operações, seria necessário reposicionar todos os elementos seguintes à posição no vetor o que aumentaria, gigantescamente, o processamento. É isso!
Valews
[quote=“Victor1982”]Pessoal,
Na minha opinião, o que a lista encadeada tem como vantagem em relação ao vetor não é o fato de não ser estático, como já foi dito pode se trabalhar com vetores sem ter a lista estática (também podemos realocar o vetor), mas sim quando queremos inserir/remover elementos do meio da lista. No caso dos vetores, para estas operações, seria necessário reposicionar todos os elementos seguintes à posição no vetor o que aumentaria, gigantescamente, o processamento. É isso!
Valews[/quote]
Pois é, o Vector faz todo esse reposicionamento (LinkedList não).
Acho que devia fazer como o FaHeCoN sugeriu: criar você mesmo a lista. É bem fácil, usando classes auto-referenciais: uma classe tem como atributo um objeto da própria classe.
Exemplo:
class Nodo {
Nodo proximo;
...
}