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 Duplamente Encadeada prof. Henrique Monteiro Cristovão 1 Listas duplamente encadeadas Cada elemento.

Apresentações semelhantes


Apresentação em tema: "Eng. de Computação – Estruturas de Dados I – Lista Duplamente Encadeada prof. Henrique Monteiro Cristovão 1 Listas duplamente encadeadas Cada elemento."— Transcrição da apresentação:

1 Eng. de Computação – Estruturas de Dados I – Lista Duplamente Encadeada prof. Henrique Monteiro Cristovão 1 Listas duplamente encadeadas Cada elemento da lista referencia o anterior e também próximo. Permite o deslocamento em ambos os sentidos. Útil para representar conjunto de objetos que devem ser percorridos nos dois sentidos. Exemplos de uso: representação de intinerários de meios de transporte, realização de busca aproximada.

2 Eng. de Computação – Estruturas de Dados I – Lista Duplamente Encadeada prof. Henrique Monteiro Cristovão 2 Exemplo 3 maçã azeda cara uva irkh barata qtde dados melão doce caro lista ant info prox

3 Eng. de Computação – Estruturas de Dados I – Lista Duplamente Encadeada prof. Henrique Monteiro Cristovão 3 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; };

4 Eng. de Computação – Estruturas de Dados I – Lista Duplamente Encadeada prof. Henrique Monteiro Cristovão 4 Modelagem do Elemento da Lista Necessidade: – Um ponteiro para o elemento anterior. – Um ponteiro para o próximo elemento. – Um ponteiro para o tipo tipo da informação a ser armazenada. Código: struct Elemento { struct Elemento *ant; struct Elemento *prox; tipo_desejado info; };

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

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

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

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

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

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

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

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

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

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

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

16 Eng. de Computação – Estruturas de Dados I – Lista Duplamente Encadeada prof. Henrique Monteiro Cristovão 16 0 qtde dados lista Algoritmo: adicionaInicio (considerando a possibilidade de lista vazia)

17 Eng. de Computação – Estruturas de Dados I – Lista Duplamente Encadeada prof. Henrique Monteiro Cristovão 17 0 qtde dados lista Algoritmo: adicionaInicio (considerando a possibilidade de lista vazia) melão doce caro fruta novo ant info prox

18 Eng. de Computação – Estruturas de Dados I – Lista Duplamente Encadeada prof. Henrique Monteiro Cristovão 18 0 qtde dados lista Algoritmo: adicionaInicio (considerando a possibilidade de lista vazia) melão doce caro fruta novo ant info prox int adicionaInicio(struct ListaD *lista, struct Fruta *fruta) { struct Elemento *novo; novo = (struct Elemento*) malloc(sizeof(struct Elemento)); novo->info = fruta; novo->prox = lista->dados; if(lista->qtde > 0) lista->dados->ant = novo; novo->ant = NULL; lista->dados = novo; lista->qtde++; return 0; }

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


Carregar ppt "Eng. de Computação – Estruturas de Dados I – Lista Duplamente Encadeada prof. Henrique Monteiro Cristovão 1 Listas duplamente encadeadas Cada elemento."

Apresentações semelhantes


Anúncios Google