Lista Encadeada Circular Lista Duplamente Encadeada

Slides:



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

LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Aula T10 – BCC202 Listas – Parte 2 Túlio Toffolo www. decom. ufop
Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo www. decom. ufop
Listas Encadeadas CONTEÚDO (1) Motivação (2) Definição (3) Operações
Pilhas e Filas CONTEÚDO (1) Pilhas (2) Filas.
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
Listas duplamente encadeadas
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
David Menotti Algoritmos e 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.
Prof.: Sergio Pacheco Estruturas de Dados I Prof.: Sergio Pacheco 1.
Listas com Ponteiros Listas encadeadas Listas circulares.
Slides: Prof. João Fabro UTFPR - Curitiba
Lista Encadeada Circular Lista Duplamente Encadeada
Listas Encadeadas.
Alocação Dinâmica de Memória
Algoritmos e Estruturas de Dados
Listas Simplesmente Encadeadas
ALGORITMOS E ESTRUTURAS DE DADOS
exercícios listas encadeadas
Prof. Hilton Cardoso Marins Junior LISTA LINEAR
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Listas Encadeadas Raquel O. Prates, Luiz Chaimowicz, Jussara Almeida
Algoritmos e Estruturas de Dados
Pesquisa em Memória Primária
Á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
Aula 11 LISTAS LIGADAS.
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.
Implementação de FILAS com Alocação Dinâmica
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
Listas, Filas e Pilhas Katia Guimarães.
Lista encadeada Representar um grupo de dados.
Estruturas de Dados PROFESSOR DIÓGENES FURLAN. Estruturas de Dados (ED) Programas operam sobre dados Dados são relacionados e possuem estrutura Como representar.
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.
Filas. #define MAXFILA 100 typedef struct queue { int item [ MAXFILA]; int inic, fim; } fila; fila q;
Listas Simplesmente Encadeadas
Aula 04 – 22/03 Listas Duplamente Encadeada – Listas Encadeada Circular – Lista Duplamente Encadeada Circular.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Estruturas de Dados Aula 17: Estruturas Genéricas
ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Prof. Alessandro Gonçalves
Prof. Hilton Cardoso Marins Junior
Estruturas de Dados Aula 9 -2: Listas simplesmente encadeadas sem sentinela e sem cabeçalho 19/06/2013.
Estruturas de Dados Aula 10: Listas (parte 2) 07/05/2014.
Estrutura de Dados Aula 3 - Listas
Profa. Juliana Mafra ESTRUTURA DE DADOS 30 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco.
11 Pilhas, Filas e Listas Duplamente Encadeadas Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Estrutura de Dados Prof. André Cypriano M. Costa
Lista Ligada Estrutura de Dados II Prof. Gale. Vantagens  Crescem (ou decrescem) à medida que elementos são inseridos (ou removidos)  seqüência encadeada.
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.
Transcrição da apresentação:

Lista Encadeada Circular Lista Duplamente Encadeada

Relembrando listas encadeadas Um nó em uma Lista Encadeada possui basicamente dois itens: ponteiro para o próximo informação armazenada Caso a informação não seja um dado simples: criar vários campos, um para cada informação Ex.: código, preço e quantidade de um produto

Relembrando listas encadeadas typedef struct tp_no { int cod; float preco; int quant; struct tp_no *prox; } TPLISTA; TPLISTA *lista; ... lista->cod=1; lista->preco=10.5; lista->quant=20;

Listas Circulares O último elemento tem como próximo o primeiro elemento da lista, formando um ciclo Útil quando: a busca é feita a partir de qualquer elemento não há ordenação na lista A rigor não existe "primeiro" ou "último" Ainda é necessário que exista um ponteiro para algum elemento, para a localização da lista por convenção, referência do primeiro ou do último 4 1 8 5 lista

Listagem void listagem (tplista *t) { tplista *p=t; if (t!=NULL) do { printf("Info: %d", p->info); p=p->prox; } while (p!=t); else printf("Lista Circular vazia!"); }

Lista Circular Inserção? Remoção?

Lista Duplamente Encadeada Útil quando é preciso percorrer a lista na ordem inversa Remoção de um elemento não precisa guardar anterior Remoção de um elemento cujo ponteiro é informado não precisar percorrer a fila toda Um conjunto maior de ligações precisam ser atualizadas

Lista Duplamente Encadeada Cada nó possui dois ponteiros: um para o elemento anterior e outro para o próximo elemento (ant e prox) ant prox lista a b c d

Listas Duplamente Encadeada typedef int tpitem; typedef struct tp_no { tpitem info; struct tp_no *ant; struct tp_no *prox; } tplista; tplista *lista;

Busca e Listagem Busca e Listagem: Código igual ao que é utilizado para a Lista Simplesmente Encadeada

Inserção no Início O novo elemento é encadeado no início da lista O seu próximo passa a ser o antigo primeiro elemento e o seu anterior é NULL Se a lista não estiver vazia, o anterior do o antigo primeiro passa a ser o novo elemento O ponteiro da lista é passado por referência e atualizado para apontar para o novo nó A função retornar 1 ou zero indicando o sucesso da inclusão lista a b e h

Inserção int insere(tplista **t, tpitem e){ tplista *novo; novo = aloca(); if (!novo) return 0; novo->info = e; novo -> ant = NULL; novo -> prox = *t; if ((*t) != NULL) (*t) -> ant = novo; *t = novo; return 1; }

Remoção A remoção é mais trabalhosa, pois é preciso acertar a cadeia nos dois sentidos Em compensação, pode-se retirar um elemento conhecendo-se apenas o ponteiro para ele Utiliza-se uma função de busca para localizar o elemento e em seguida o encadeamento é ajustado Ao final, o elemento é liberado

Remoção Sendo p o ponteiro para o elemento a ser excluído, se o elemento estiver no meio da lista, devemos fazer: p->ant->prox = p->prox; p->prox->ant = p->ant; Caso o elemento esteja em um extremo da lista, existem outras condições: se p for o primeiro, não se pode referenciar p->ant, pois ele é NULL; o mesmo acontece para p->prox quando é o último além disso, se for o primeiro, é preciso atualizar o ponteiro da lista

Remoção p lista b a e h p lista a b e h

Remoção int retira (tplista **t, int valor) { tplista *p; p=busca(*t,valor); if (p == NULL) return 0; /* não achou o elemento */ if (*t == p) *t=p->prox; /* primeiro elemento */ else p->ant->prox=p->prox; /* não é o primeiro */ if (p->prox!=NULL) /* não é o último */ p->prox->ant=p->ant; free(p); return 1; }

Lista Duplamente Encadeada e Circular Cada nó possui dois ponteiros: um para o elemento anterior e outro para o próximo elemento (ant e prox) O anterior do primeiro é o último e o próximo do último é o primeiro a b c d lista