Jump to content
JoaoNascimento

Listas ligadas

Recommended Posts

JoaoNascimento

Pessoal, já vi muitas coisas sobre listas ligadas em C na net, mas não consigo entender direito como funcionam e se preenchem!

Alguém conhece um site que seja fixe ou então que me possa explicar por aqui?

Share this post


Link to post
Share on other sites
softklin

Uma lista ligada, do inglês Linked List, é uma estrutura de dados. Ela permite-te armazenar valores em nós. Este nós, por sua vez, estão ligados a outros, que também têm os seus valores. Um pouco de teoria:

http://en.wikipedia.org/wiki/Linked_list

Uma particularidade de uma lista ligada é que o seu acesso é feito de forma sequencial, e não indexado (em oposição aos arrays, por exemplos). Isto significa que conheces um nó inicial, mas desconheces os outros, ou mesmo quando a lista acabada (ou seja, tens sempre de começar do primeiro nó para aceder a qualquer outro). Tipicamente, neste caso usas um ciclo while para procurar um dado valor, um nó NULL (significa o fim da lista), ou um nó de uma dada ordem (primeiro, terceiro, centésimo décimo primeiro, ...). Por outro lado, é porreio porque, de acordo com a sua definição, não têm limite de elementos, ou seja, são virtualmente infinitas (com o custo das operações sobre listas se tornarem muito lentas: vê na wiki).

Para preencheres uma lista ligada, vais percorrendo desde o primeiro nó, acedendo ao seguinte (seu sucessor) até que encontres NULL (significa que não existe nó seguinte, e podes tu criar um nesse lugar. Se estás a aprender listas ligadas, e tens conhecimentos de C, tentar implementar uma lista ligada é um excelente exercício! Se quiseres experimentar, deixa aqui a tua solução, para outras pessoas te ajudarem a melhorar. Podes tentar fazer as operações de inserção, listagem de elementos, procura e remoção.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
softklin

Exactamente. No fundo tens:

Estrutura nó, com 2 campos:

- valor, do tipo que quiseres (por exemplo, uma lista de valores inteiros, terá aqui o valor int)

- seguinte, do tipo Estrutura nó, que é o apontador para o nó seguinte na sequência

Estrutura lista, com pelo menos 1 campo:

- cabeça/head/inicial, do tipo Estrutura nó, que é um apontador para o nó inicial da tua lista.

Existem outras estruturas de dados baseadas na lista ligada que adicionam mais campos, mas esses são o essencial para ter uma lista ligada funcional.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
brunoais

Mesmo sem exemplo pensa num Struct.

O struct tem 2 vars:

1 aponta para o conteúdo do nó,

outra aponta para o próximo nó.

O conteúdo do nó pode ser um struct de duas vars (as q indicaste q precisas).


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.