Listas duplamente encadeadas

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

Aula T10 – BCC202 Listas – Parte 2 Túlio Toffolo www. decom. ufop
Motivação para listas duplamente encadeadas e circulares
Programação em Java Prof. Maurício Braga
Listas Encadeadas CONTEÚDO (1) Motivação (2) Definição (3) Operações
Estruturas de Dados Árvores Binárias
Recursividade Prof. Rosana Palazon.
Listas encadeadas Prof. Rosana Palazon.
Listas duplamente encadeadas
Programação II Estruturas de Dados
TADS – Tipos Abstratos de Dados
TADS – Tipos Abstratos de Dados
Exemplos de recursividade no mundo
Alocação Dinâmida de Memória
Engenharia de Computação.
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
Árvores.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
Listas Ligadas – Conceitos Avançados
AED – Algoritmos e Estruturas de Dados
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Prof.: Sergio Pacheco Estruturas de Dados I Prof.: Sergio Pacheco 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Listas com Ponteiros Listas encadeadas Listas circulares.
Universidade de Brasília
Slides: Prof. João Fabro UTFPR - Curitiba
Slides: Prof. SIMÃO Revisão: Prof. João Fabro
Slides: Prof. João Fabro UTFPR - Curitiba
Lista Encadeada Circular Lista Duplamente Encadeada
Listas Encadeadas.
Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados
Algoritmos e Estruturas de Dados
Listas Simplesmente Encadeadas
ALGORITMOS E ESTRUTURAS DE DADOS
exercícios listas encadeadas
Prof. Hilton Cardoso Marins Junior LISTA LINEAR
Listas Encadeadas Raquel O. Prates, Luiz Chaimowicz, Jussara Almeida
Algoritmos e Estruturas de Dados
Árvores binárias de pesquisa com balanceamento
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Estruturas de Dados com Jogos
INTELIGÊNCIA ARTIFICIAL
Principais operações em Listas TPA Listas Simples Inserção no Final 1.void insereNofinalDaLista(Lista *l, Elemento e){ 2.Lista paux,p; 3. p.
TAD Pilha com Alocação Dinâmica de Memória
Implementação de FILAS com Alocação Dinâmica
Lista Encadeada Circular Lista Duplamente Encadeada
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Listas lineares Denise Guliato Faculdade de Computação – UFU
Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS
1.
Estruturas de Dados Aula 11: TAD Pilha
Árvore Binária de Busca
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Listas.
Nome alunos 1 Título UC. Título – slide 2 Conteúdo Conteúdo 2.
Estruturas de Dados Aula 17: Estruturas Genéricas
ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.
Prof. Alessandro Gonçalves
INE5408 Estruturas de Dados Listas Encadeadas Simples.
11 Pilhas, Filas e Listas Duplamente Encadeadas Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Lista Ligada Estrutura de Dados II Prof. Gale. Vantagens  Crescem (ou decrescem) à medida que elementos são inseridos (ou removidos)  seqüência encadeada.
INE5408 Estruturas de Dados Aula 6b Listas Circulares.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Fundamentos de Programação 1 Slides 21 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Encadeada”.
Fundamentos de Programação 1 Slides 22 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Duplamente Encadeada - Projeto com vários Arquivos”.
INE5408 Estruturas de Dados Listas Encadeadas - Pilhas encadeadas - Filas encadeadas - Listas duplamente encadeadas.
Transcrição da apresentação:

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.

Exemplo 3 melão maçã uva doce azeda irkh caro cara barata lista qtde dados 3 ant info prox ant info prox ant info prox melão maçã uva doce azeda irkh caro cara barata

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; };

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; };

Algoritmo: adicionaInicio lista qtde dados 2 ant info prox ant info prox maçã uva azeda irkh cara barata

Algoritmo: adicionaInicio lista qtde dados 2 ant info prox ant info prox melão maçã uva doce azeda irkh fruta caro cara barata int adicionaInicio(struct ListaD *lista, struct Fruta *fruta) {

Algoritmo: adicionaInicio lista qtde dados 2 novo ant info prox ant info prox melão maçã uva doce azeda irkh fruta caro cara barata int adicionaInicio(struct ListaD *lista, struct Fruta *fruta) { struct Elemento *novo;

Algoritmo: adicionaInicio lista qtde dados 2 novo ant info prox ant info prox ant info prox melão maçã uva doce azeda irkh fruta caro cara barata int adicionaInicio(struct ListaD *lista, struct Fruta *fruta) { struct Elemento *novo; novo = (struct Elemento*)malloc(sizeof(struct Elemento));

Algoritmo: adicionaInicio lista qtde dados 2 novo ant info prox ant info prox ant info prox melão maçã uva doce azeda irkh fruta caro cara barata int adicionaInicio(struct ListaD *lista, struct Fruta *fruta) { struct Elemento *novo; novo = (struct Elemento*)malloc(sizeof(struct Elemento)); novo->info = fruta;

Algoritmo: adicionaInicio lista qtde dados 2 novo ant info prox ant info prox ant info prox melão maçã uva doce azeda irkh fruta caro cara barata 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;

Algoritmo: adicionaInicio lista qtde dados 2 novo ant info prox ant info prox ant info prox melão maçã uva doce azeda irkh fruta caro cara barata 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;

Algoritmo: adicionaInicio lista qtde dados 2 novo ant info prox ant info prox ant info prox melão maçã uva doce azeda irkh fruta caro cara barata 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;

Algoritmo: adicionaInicio lista qtde dados 2 novo ant info prox ant info prox ant info prox melão maçã uva doce azeda irkh fruta caro cara barata 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;

Algoritmo: adicionaInicio lista qtde dados 3 novo ant info prox ant info prox ant info prox melão maçã uva doce azeda irkh fruta caro cara barata 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++;

Algoritmo: adicionaInicio lista qtde dados 3 ant info prox ant info prox ant info prox melão maçã uva doce azeda irkh fruta caro cara barata 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;

Algoritmo: adicionaInicio (considerando a possibilidade de lista vazia) qtde dados

Algoritmo: adicionaInicio (considerando a possibilidade de lista vazia) qtde dados novo ant info prox melão doce fruta caro

Algoritmo: adicionaInicio (considerando a possibilidade de lista vazia) 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; if(lista->qtde > 0) lista->dados->ant = novo; novo->ant = NULL; lista->dados = novo; lista->qtde++; return 0; } novo ant info prox melão doce fruta caro

Exemplos e exercícios no documento cooperativo disponível no site