Listas lineares Denise Guliato Faculdade de Computação – UFU

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

Aula T10 – BCC202 Listas – Parte 2 Túlio Toffolo www. decom. ufop
Denise Guliato Faculdade de Computação – UFU
Estruturas de Dados Árvores Binárias
Recursividade Prof. Rosana Palazon.
Listas encadeadas Prof. Rosana Palazon.
Algoritmos de manipulação de estruturas elementares de dados
Listas duplamente encadeadas
Programação II Estruturas de Dados
TADS – Tipos Abstratos de Dados
TADS – Tipos Abstratos de Dados
Listas duplamente encadeadas
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
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
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.
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
Tipo Abstrato de Dados: Lista não ordenada
Algoritmos e Estruturas de Dados
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
Listas lineares 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.
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.
Estruturas de Dados Aula 9: Listas (parte 1)
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.
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
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.
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)
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.
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.
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 lineares Denise Guliato Faculdade de Computação – UFU www.facom.ufu.br/~guliato Vários slides foram adaptados de Nina Edelwais e Renata Galante Estrutura de Dados – Série de Livros Didáticos - Informática - UFRGS

Crédito do slide para Nina Edelwais e Renata Galante Denise Guliato Listas lineares Listas lineares duplamente encadeadas Crédito do slide para Nina Edelwais e Renata Galante Denise Guliato

Crédito do slide para Nina Edelwais e Renata Galante Denise Guliato LL duplamente encadeadas LL duplamente encadeadas Cada nodo tem 2 campos de elo A lista pode ser percorrida nas duas direções Anterior Info Próximo Nodo genérico PtLista L1 L2 L3 L4 Crédito do slide para Nina Edelwais e Renata Galante Denise Guliato

Operações Algoritmos Criar e inicializar uma lista Inserir novo nodo LL duplamente encadeadas Operações Criar e inicializar uma lista Inserir novo nodo Remover um nodo Consultar um nodo Destruir lista Algoritmos Semelhantes a LL encadeada simples Tipo de nodo utilizado nos algoritmos: struct no { struct no* ant; int info; struct no* prox; } typedef struct no Lista;

Algoritmo: criar lista circular Lista* Cria_lista(void) { return NULL; }

Inserção de um novo nodo no meio da lista LL duplamente encadeadas Inserção de um novo nodo no meio da lista Novo nodo PtLista L1 L2 L3 L4 L5 PtLista L5 L1 L2 L3 L4 Crédito do slide para Nina Edelwais e Renata Galante Denise Guliato

Inserção de um novo nodo no inicio da lista PtLista L1 L2 L3 L4 PtLista L1 L2 L3 L4 L5 Adaptado de Nina Edelwais e Renata Galante Denise Guliato

Algoritmo: inserir um nodo no inicio da lista Lista* Insere_elem(Lista* Ptl,int elem) Lista* Insere_elem(Lista *Ptl, int elem) { Lista *Ptnodo; Ptnodo = (Lista*)malloc(sizeof(Lista)); if (Ptnodo == NULL) return Ptl; Ptnodo->info = elem; Ptnodo->prox = Ptl; Ptnodo->ant = NULL; if(Ptl != NULL) Ptl->ant = Ptnodo; Ptl = Ptnodo; }

Crédito do slide para Nina Edelwais e Renata Galante Denise Guliato LL duplamente encadeadas Remoção de novo nodo PtLista Remover A B C D PtLista A B C D Crédito do slide para Nina Edelwais e Renata Galante Denise Guliato

Algoritmo:Remover um nodo de LL Duplamente Encadeada Lista* Remove_elem(Lista *Ptl, int elem) Lista* Remove_elem(Lista *Ptl, int elem) { Lista *atual; if (Ptl == NULL) return Ptl; atual = Ptl; while (atual != NULL && elem != atual->info) atual = atual->prox; } if (atual == NULL)// não achou if (atual == Ptl)// primeiro nodo a ser removido Ptl = atual->prox; else // nodo removido do meio ou do final da lista atual->ant->prox = atual->prox; if (atual->prox != NULL) atual->prox->ant = atual->ant; free(atual);

Adaptado de Nina Edelwais e Renata Galante Denise Guliato LL duplamente encadeadas Consulta à lista Acesso sempre pelo primeiro nodo da lista A lista pode ser percorrida nas duas direções Adaptado de Nina Edelwais e Renata Galante Denise Guliato

Algoritmo: Consulta K-esimo nodo da Lista LL encadeada circular LL encadeada circular Algoritmo: Consulta K-esimo nodo da Lista int Consulta_nodo(Lista Ptl, int pos,int *elem) int Consulta_nodo(Lista *Ptl, int pos, int *elem) { int cont = 1; Lista *pt; pt = Ptl; if (pos <= 0 || pt == NULL) return 0; while(pt != NULL && cont < pos) pt=pt->prox; cont++; } if (pt == NULL) else { *elem=pt->info; return 1;

Algoritmo: destruir lista circular Lista* Libera_lista(Lista *Ptl) { Lista *aux; while (Ptl!= NULL) aux = Ptl; Ptl = Ptl->prox; free(aux); } return NULL;

lladae2d.h typedef struct no Lista; Lista* Cria_lista(void); Lista* Libera_lista(Lista* Ptl); int E_vazia(Lista* Ptl); int E_cheia(Lista* Ptl); Lista* Insere_elem(Lista* Ptl, int elem); Lista* Remove_elem(Lista* Ptl, int elem); int Tamanho_lista(Lista* Ptl); int Consulta_nodo(Lista* Ptl, int pos, int *elem);

lladae2d.c #include <stdio.h> #include <stdlib.h> #include "lladae2d.h“ struct no { struct no* ant; int info; struct no* prox; }; Lista* Cria_lista(void) {……..} Lista* Libera_lista(Lista *Ptl) {…….} int E_vazia(Lista *Ptl) int E_cheia(Lista *Ptl) Lista* Insere_elem(Lista *Ptl, int elem) {.......} Lista* Remove_elem(Lista *Ptl, int elem) int Tamanho_lista(Lista Ptl) int Consulta_nodo(Lista *Ptl, int pos,int *elem) {……} lladae2d.c

Considere uma Lista duplamente encadeada circular LL duplamente encadeada circular Considere uma Lista duplamente encadeada circular PtLista L1 L2 L3 L4

Exercício Implemente o TAD Lista para a lista circular duplamente encadeada. Teste no programa do jogo baseado no problema de Josephus