A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 1 TADS – Tipos Abstratos de Dados Listas Encadeadas.

Apresentações semelhantes


Apresentação em tema: "Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 1 TADS – Tipos Abstratos de Dados Listas Encadeadas."— Transcrição da apresentação:

1 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 1 TADS – Tipos Abstratos de Dados Listas Encadeadas : Listas simplesmente encadeadas: cada nó aponta apenas para o próximo. Listas duplamente encadeadas: cada nó aponta para o próximo e também para o anterior.

2 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 2 Motivação para uso da lista encadeada: desvantagens do uso de vetor Tamanho máximo fixo Mesmo vazias ocupam espaço grande de memória Um vetor de ponteiros ameniza o desperdício de memória, mas, desperdiça a memória dos ponteiros não usados. Operações podem envolver muitos deslocamentos de dados: Inclusão em uma posição ou no início Exclusão em uma posição ou no início

3 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 3 Listas simplemente encadeadas São listas onde cada elemento está armazenado em um TAD chamado elemento de lista. Cada elemento da lista referencia o próximo que só é alocado quando necessário de forma dinamica Para referenciar o primeiro elemento utiliza-se um TAD cabeça de lista.

4 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 4 Listas simplemente encadeadas São listas onde cada elemento está armazenado em um TAD chamado elemento de lista. Cada elemento da lista referencia o próximo que só é alocado quando necessário de forma dinamica Para referenciar o primeiro elemento utiliza-se um TAD cabeça de lista.

5 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 5 Exemplo: 5 melão infopróximo maçã infopróximo uva infopróximo qtdedados Cabeça de lista Elemento de Lista

6 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 6 Modelagem da Cabeça da Lista Necessidade: – Um inteiro para indicar a qtde de elementos da lista. – Um ponteiro para o primeiro elemento da lista. Código: struct Lista { int qtde; struct Elemento *dados; };

7 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 7 Modelagem do Elemento da Lista Necessidade: – Um ponteiro para o próximo elemento da lista. – Um campo do tipo da informação que vamos armazenar. Código: struct Elemento { struct Elemento *prox; tipo_desejado info; };

8 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 8 Modelagem do Elemento da Lista (versão 2) struct Elemento { Elemento*proximo; TipoInfo *info; }; struct TipoInfo { tipo-do-campo1campo1; tipo-do-campo2campo2; … tipo-do-campoNcampoN; } info como ponteiro torna os algoritmos mais genéricos. Com o uso do typedef generaliza-se ainda mais.

9 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 9 Para tornar todos os algoritmos da lista mais genéricos, usa-se o campo info como um ponteiro para um elemento de informação. 3 info próximoinfo próximoinfo próximo qtdedados Elemento de Informação (TipoInfo) melão doce caro maçã azeda cara uva irkh barata

10 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 10 Algumas funcionalidades básicas: – Criar lista. – Colocar e retirar dados da lista. – Realizar testes sobre a lista: se vazia, se contém elemento etc. – Destruir uma lista. 3 melão doce caro maçã azeda cara uva irkh barata

11 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 11 Algoritmo: adicionaInicio 2 maçã azeda cara uva irkh barata qtde dados info prox

12 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 12 Algoritmo: adicionaInicio 2 maçã azeda cara uva irkh barata qtde dados info prox int adicionaInicio(struct Lista *lista, struct Fruta *fruta) melão doce caro lista fruta

13 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 13 Algoritmo: adicionaInicio 2 maçã azeda cara uva irkh barata qtde dados info prox int adicionaInicio(struct Lista *lista, struct Fruta *fruta) { struct Elemento *novo; melão doce caro lista fruta novo

14 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 14 Algoritmo: adicionaInicio 2 maçã azeda cara uva irkh barata qtde dados info prox int adicionaInicio(struct Lista *lista, struct Fruta *fruta) { struct Elemento *novo; novo = (struct Elemento*)malloc(sizeof(struct Elemento)); melão doce caro lista fruta novo info prox

15 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 15 Algoritmo: adicionaInicio 2 maçã azeda cara uva irkh barata qtde dados info prox int adicionaInicio(struct Lista *lista, struct Fruta *fruta) { struct Elemento *novo; novo = (struct Elemento*)malloc(sizeof(struct Elemento)); novo->prox = lista->dados; melão doce caro lista fruta novo info prox

16 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 16 Algoritmo: adicionaInicio 2 maçã azeda cara uva irkh barata qtde dados info prox int adicionaInicio(struct Lista *lista, struct Fruta *fruta) { struct Elemento *novo; novo = (struct Elemento*)malloc(sizeof(struct Elemento)); novo->prox = lista->dados; novo->info = fruta; melão doce caro lista fruta novo info prox

17 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 17 Algoritmo: adicionaInicio 2 maçã azeda cara uva irkh barata qtde dados info prox int adicionaInicio(struct Lista *lista, struct Fruta *fruta) { struct Elemento *novo; novo = (struct Elemento*)malloc(sizeof(struct Elemento)); novo->prox = lista->dados; novo->info = fruta; lista->dados = novo; melão doce caro lista fruta novo info prox

18 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 18 Algoritmo: adicionaInicio 3 maçã azeda cara uva irkh barata qtde dados info prox int adicionaInicio(struct Lista *lista, struct Fruta *fruta) { struct Elemento *novo; novo = (struct Elemento*)malloc(sizeof(struct Elemento)); novo->prox = lista->dados; novo->info = fruta; lista->dados = novo; lista->qtde++; melão doce caro lista fruta novo info prox

19 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 19 Algoritmo: adicionaInicio 3 maçã azeda cara uva irkh barata qtde dados info prox melão doce caro lista fruta info prox int adicionaInicio(struct Lista *lista, struct Fruta *fruta) { struct Elemento *novo; novo = (struct Elemento*)malloc(sizeof(struct Elemento)); novo->prox = lista->dados; novo->info = fruta; lista->dados = novo; lista->qtde++; return 0; }

20 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 20 Modelagem do Tipo Info Para inserção em ordem e para localizar um determinado elemento são necessárias funções para comparar as informações associadas aos elementos Estas operações de comparação fazem parte do TAD TipoInfo e não da Lista. Sugestões: – igual(dado1,dado2): 0 se igual, 1 se diferente – maior(dado1,dado2): 0 se maior, 1 se menor ou igual – maior(dado1,dado2): 0 se menor, 1 se maior ou igual – compara(dado1,dado2): 0 se igual, >0 se maior, <0 se menor

21 Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 21 Exemplos e exercícios no documento cooperativo disponível no site


Carregar ppt "Eng. de Computação – Estruturas de Dados I – Lista Simplesmente Encadeada prof. Henrique Monteiro Cristovão 1 TADS – Tipos Abstratos de Dados Listas Encadeadas."

Apresentações semelhantes


Anúncios Google