Escolar Documentos
Profissional Documentos
Cultura Documentos
Prog2 Aula 11 Listas Encadeadas
Prog2 Aula 11 Listas Encadeadas
Introduo
Vetores:
Ocupa um espao contguo de memria;
Permite acesso randmico;
Requer pr-dimensionamento de espao de memria;
Listas Encadeadas
Uma Lista Encadeada uma sequncia de elementos, onde
cada elemento tem uma informao armazenada e um
ponteiro para o prximo elemento da sequncia:
lista
Info1
Info2
Info3
...
InfoN
Listas Encadeadas
struct elemento
{
int info;
struct elemento *prox;
};
typedef struct elemento Elemento;
prox
prox
info
info
Listas Encadeadas
lista
Info1
Info2
Info3
Criao;
Insero;
Impresso;
Teste de vazia;
Busca;
Remover um elemento;
Libera a lista;
Manter lista ordenada;
Igualdade;
...
InfoN
NULL
Cria uma lista vazia, representada pelo ponteiro NULL
novo
lista
val
Info1
Info2
Info3
lista
45
23
lista
Info1
Info2
Info3
...
InfoN
lista
Info1
Info2
Info3
...
InfoN
Info2
Info3
...
InfoN
Info2
Info3
...
InfoN
Info2
Info3
...
InfoN
Info2
Info3
...
InfoN
Info1
Novo
Info3
Novo
...
InfoN
lista
Info1
Sub-lista
Caso contrrio:
imprima a informao associada ao primeiro n, dada por lista->info;
imprima a sub-lista, dada por lista>prox, chamando recursivamente a funo;
/* Funo imprime recursiva */
void lista_imprime_rec(Elemento* lista)
{
if (lista_vazia(lista) == 0) {
printf("info: %d\n", lista->info);
lista_imprime_rec(lista->prox);
}
}
Listas Circulares
O ltimo elemento da lista tem como prximo o primeiro
elemento da lista, formando um ciclo;
A lista pode ser representada por um ponteiro para um
elemento inicial qualquer da lista;
Lista
Info1
Info2
Info3
Info1
Info2
Info3
Info1
Info2
Info3
prox
prox
ant
info
ant
info
lista
Info1
Info2
Info3
Leitura Complementar
Exerccios
Lista de Exerccios 09 Listas Encadeadas
http://www.inf.puc-rio.br/~elima/prog2/