Listas duplamente encadeadas

Slides:



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

Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de.
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Aula T10 – BCC202 Listas – Parte 2 Túlio Toffolo www. decom. ufop
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.
Algoritmos de manipulação de estruturas elementares de dados
Programação II Estruturas de Dados
TADS – Tipos Abstratos 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.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
Pesquisa em Memória Primária – Árvores de Busca
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
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.
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.
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
Listas Encadeadas Raquel O. Prates, Luiz Chaimowicz, Jussara Almeida
Algoritmos e Estruturas de Dados
Pesquisa em Memória Primária
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
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.
Árvores Binárias de Pesquisa
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
Denise Guliato Faculdade de Computação – UFU
Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS
Estruturas de Dados Aula 9: Listas (parte 1)
Estruturas de Dados PROFESSOR DIÓGENES FURLAN. Estruturas de Dados (ED) Programas operam sobre dados Dados são relacionados e possuem estrutura Como representar.
Á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
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. Hilton Cardoso Marins Junior ÁRVORES BINÁRIAS.
Prof. Alessandro Gonçalves
Prof. Hilton Cardoso Marins Junior
11 Pilhas, Filas e Listas Duplamente Encadeadas Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
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.
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”.
Transcrição da apresentação:

Listas duplamente encadeadas Prof. Rosana Palazon

Listas simplesmente encadeadas Caracterizam-se pelo simples encadeamento entre os seus elementos. Não permitem o percurso reverso da lista. Devido ao simples encadeamento, não adianta nada conhecermos o ponteiro do elemento a ser retirado, pois, de qualquer modo, teremos que percorrer a lista a procura do seu antecessor.

Listas duplamente encadeadas Cada elemento da lista tem um ponteiro tanto para o seu próximo como para o seu anterior. Assim, dado um elemento, podemos encontrar com facilidade os elementos que lhe são adjacentes. Se tivermos um ponteiro para o ultimo elemento da lista, poderemos facilmente percorrê-la em ordem inversa.

Listas duplamente encadeadas Consideremos: typedef struct lista2{ int info; struct lista2 *ant; struct lista2 *prox; }Lista2; //definição da lista Lista2 *l; //ponteiro que deve receber o endereço da lista

Listas duplamente encadeadas (criação) Função de criação: /* retorna uma lista duplavazia */ Lista2 * lista_cria() { return NULL; }

Listas encadeadas (inserção) Função de inserção: /* insere o novo dado no início da lista e retorna a lista atualizada*/ Lista2* lista_insere( Lista2* l, int dado) { Lista2 *novo= (Lista2*) malloc (sizeof(Lista2)); novo->info=dado; novo->prox=l; novo->ant=NULL; //verifica se a lista não esta vazia if(l!= NULL) l->ant=novo; return novo; }

Listas duplamente encadeadas (exibição) Função de exibição: /* percorre a lista do inicio até o fim mostrando os elementos*/ void lista_exibe(Lista2* l) { Lista2 *aux;/*variável usada para percorrer a lista */ printf("\n\nLista\n\n"); for(aux=l;aux!=NULL;aux=aux->prox) printf("%d\t", aux->info); }

Lista duplamente encadeada (main) Como seria o trecho do main correspondente à criação e inserção de valores na lista? int main() { Lista2 *l; //declara uma lista não inicializada l=lista_cria(); //inicializa a lista l=lista_insere(l,10); //insere o elemento 10 l=lista_insere(l,20); //insere o elemento 20 l=lista_insere(l,30); //insere o elemento 30 lista_exibe(l); //mostra o conteúdo da lista printf("\n\n"); system("pause"); return 0; }

Listas encadeadas (lista vazia) Função de verificação de lista vazia: /* retorna 1 se vazia ou zero se falso*/ int lista_vazia(Lista2* l) { return(l==NULL); }

Listas encadeadas (busca) Função de busca de um elemento na lista: /* retorna o elemento ou NULL se não achou*/ Lista2* lista_busca(Lista2* l, int dado) { //variável usada para percorrer a lista Lista2 *a; for(a=l;a!=NULL;a=a->prox) if(a->info == dado) return a; } return NULL;

Listas duplamente encadeadas (remoção) Para a retirada de um elemento da lista usamos a função de busca, e de posse do ponteiro do elemento a ser removido religamos os elos:

Listas encadeadas (remoção) Função que retira um elemento da lista: /* retorna o elemento ou a lista original*/ Lista2* lista_retira(Lista2* l, int dado) { //procura o elemento na lista usando a função busca Lista2* aux=lista_busca(l, dado); if (aux==NULL) //não achou o elemento return l; //retira o elemento encadeado if(l==aux) {//verifica se é o primeiro da lista l=aux->prox; l->ant=NULL;} else aux->ant->prox=aux->prox; //testa para ver se é o ultimo da lista if (aux->prox!=NULL) aux->prox->ant=aux->ant; free(aux); }

Lista duplamente encadeada Exercício Criar uma lista duplamente encadeada contendo: nome e telefone Implementar as seguintes funções em um menu: Inserir os elementos de forma ordenada (nome), sem repetição Mostrar o próximo a partir de um elemento (se chegar ao fim da lista, recomece) Mostrar o anterior a partir de um elemento (se chegar ao inicio da lista, recomece) Exibir os elementos em ordem crescente ou decrescente Localizar um telefone a partir de um nome