Estruturas de Dados Aula 10: Listas (parte 2) 07/05/2014.

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
Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo www. decom. ufop
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
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
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
Filas David Menotti Estruturas de Dados I DECOM – UFOP.
Pesquisa em Memória Primária – Árvores de Busca
Aula T11 – BCC202 Pilhas Túlio Toffolo
David Menotti Estruturas de Dados I DECOM – UFOP
Pilha David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
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
Pesquisa em Memória Primária
Aula T12 – BCC202 Listas Túlio Toffolo
LPG - I: Alocação Dinâmica de Memória - Ponteiros
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
Robson Godoi / Sandra Siebra
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
Prof. Hilton Cardoso Marins Junior LISTA LINEAR
Introdução a Estruturas de Dados Avançadas Utilizando Linguagem C
Listas Encadeadas Raquel O. Prates, Luiz Chaimowicz, Jussara Almeida
Algoritmos e Estruturas de Dados
LISTAS DUPLAMENTE ENCADEADAS
Pesquisa em Memória Primária
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
INTELIGÊNCIA ARTIFICIAL
Á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
Aula 3 Vetores e Listas. Arrays (vetores) Array – sequência de elementos do mesmo tipo. Tamanho do Array – seu número de elementos (número fixo) Consequência:
Estruturas de Dados Aula 9: Listas (parte 1)
Estruturas de Dados Aula 14: Recursão 04/06/2014.
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.
Estruturas de Dados Aula 17: Estruturas Genéricas
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Estruturas de Dados Aula 15: Árvores
Estruturas de Dados Aula 9 -2: Listas simplesmente encadeadas sem sentinela e sem cabeçalho 19/06/2013.
Estrutura de Dados Aula 02 1.
Profa. Juliana Mafra ESTRUTURA DE DADOS 30 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco.
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.
UNIVERSIDADE FEDERAL DE MINAS GERAIS Listas Lineares Cristiano Arbex Valle Vinicius Fernandes dos Santos
Função de buscar elemento na lista simplesmente encadeada
Transcrição da apresentação:

Estruturas de Dados Aula 10: Listas (parte 2) 07/05/2014

Fontes Bibliográficas Livros: –Projeto de Algoritmos (Nivio Ziviani): Capítulo 3; –Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 10; –Estruturas de Dados e seus Algoritmos (Szwarefiter, et. al): Capítulo 2; –Algorithms in C (Sedgewick): Capítulo 3; Slides baseados nas transparências disponíveis em: ias.php ias.php

Listas com alocação não sequencial e dinâmica Cada item é encadeado com o seguinte mediante uma variável do tipo Ponteiro. Permite utilizar posições não contíguas de memória. É possível inserir e retirar elementos sem necessidade de deslocar os itens seguintes da lista. Há uma célula cabeça para simplificar as operações sobre a lista Estrutura Encadeada

Listas com alocação não sequencial e dinâmica Cada item é encadeado com o seguinte mediante uma variável do tipo Ponteiro. Permite utilizar posições não contíguas de memória. É possível inserir e retirar elementos sem necessidade de deslocar os itens seguintes da lista.

Estrutura da Lista com Alocação não Sequencial e Dinâmica A lista é constituída de células. Cada célula contém um item da lista e um ponteiro para a célula seguinte. O registro (struct) TipoLista contém um ponteiro para a célula cabeça e um ponteiro para a última célula da lista.

Estrutura da Lista com Alocação não Sequencial e Dinâmica (2) – lista.h typedef int Posicao; typedef struct tipoitem TipoItem; typedef struct tipolista TipoLista; TipoLista* InicializaLista(); int Vazia (TipoLista* Lista); void Insere (TipoItem* x, TipoLista* Lista); void Retira (TipoLista* Lista, int v); void Imprime (TipoLista* Lista); TipoItem* InicializaTipoItem(); void ModificaValorItem (TipoItem* x, int valor); void ImprimeTipoItem(TipoItem* x);

Estrutura da Lista com Alocação não Sequencial e Dinâmica (2) – arquivo.c #include #include "lista.h" struct tipoitem{ int valor; /* outros componentes */ }; typedef struct celula_str Celula; struct celula_str { TipoItem Item; Celula* Prox; }; struct tipolista{ Celula* Primeiro, Ultimo; };

Implementação TAD Lista com Ponteiros TipoLista* InicializaLista() { TipoLista* lista = (TipoLista*)malloc(sizeof(TipoLista)); Lista->Ultimo = NULL; Lista->Primeiro = NULL; return lista; }

Implementação TAD Lista com Ponteiros int Vazia (TipoLista* Lista) { return (Lista->Primeiro == NULL); }

Implementação TAD Lista com Ponteiros (2) void Insere (TipoItem* x, TipoLista *Lista){ Celula* novo = (Celula*) malloc(sizeof(Celula)); if (lista->Ultimo == NULL) lista->Primeiro = lista->Ultimo = novo; else {Lista->Ultimo->Prox = novo; Lista->Ultimo = Lista->Ultimo->Prox; } Lista->Ultimo->Item =*x; Lista->Ultimo->Prox = NULL; }

void Retira (TipoLista *Lista, int v) { Celula* ant = NULL; Celula* p = Lista->Primeiro; while (p != NULL && p->Item.valor != v) { ant = p; p = p->Prox;} if (p == NULL) return; if (p == Lista->Primeiro && p == Lista->Ultimo){ Lista->Primeiro = Lista->Ultimo = NULL; free (p); return; } if (p == Lista->Ultimo){ Lista->Ultimo = ant; ant->Prox = NULL; free (p); return;} if (p == Lista->Primeiro) Lista->Primeiro = p->Prox; else ant->Prox = p->Prox; free(p);}

Implementação TAD Lista com Ponteiros(4) void Imprime (TipoLista* Lista) { Celula* Aux; Aux = Lista->Primeiro; while (Aux != NULL) { printf (“%d\n”, Aux->Item.valor); Aux = Aux->Prox; }

Lista com alocação não sequencial e dinâmica: vantagens e desvantagens Vantagens: – Permite inserir ou retirar itens do meio da lista a um custo constante (importante quando a lista tem de ser mantida em ordem). – Bom para aplicações em que não existe previsão sobre o crescimento da lista (o tamanho máximo da lista não precisa ser definido a priori). Desvantagens: –Utilização de memória extra para armazenar os ponteiros. –Administração de memória (Alocação, Liberação)