Tipos Abstractos de Dados (TADs) e Java

Tamanho: px
Começar a partir da página:

Download "Tipos Abstractos de Dados (TADs) e Java"

Transcrição

1 Tipos Abstractos de Dados (TADs) e Java Neste capítulo apresentamos a metodologia de desenvolvimento dos TADs em Java, introduzimos o conceito de estrutura linear e sua implementação utilizando a estrutura estática e dinâmica. O QUE SÃO TADS... 1 IMPLEMENTAR TAD EM JAVA... 1 ESTRUTURAS... 2 ESTRUTURA ESTÁTICA... 3 ESTRUTURA DINÂMICA... 4 LISTAS SIMPLESMENTE LIGADAS/ENCADEADAS... 4 Inserir Elemento na Cabeça da Lista... 6 Inserir Elemento na Cauda da Lista... 8 Remoção do nó...9 LISTAS DUPLAMENTE ENCADEADA/LIGADAS LISTAS CIRCULARES O que são TADs Na noção de Tipo Abstracto de Dados (TAD) devemos especificar as propriedades fundamentais de um tipo de dado, de um modo independente da sua implementação numa linguagem. Implementar TAD em Java Implementar um tipo abstracto de dados (TAD) envolve três passos: 1. Definição de um API Java (Application Programming Interface), ou simplesmente interface, que descreve os métodos que o TAD suporta e como eles são declarados e usados. 2. Escolha da representação concreta do TAD para usar na implementação. Basicamente vamos considerar dois tipos de representação: Estrutura estática (utilização de tabelas) ou Footer Page 1

2 Estrutura dinâmica (utilização das listas ligadas/encadeadas, arvores, etc.). 3. Implementação da interface através de uma classe e tendo em conta a representação escolhida no ponto 2. Para todo o TAD pode existir várias implementações, contudo todas as implementações respeitam o interface definido. Estruturas Frequentemente precisamos agrupar vários elementos/dados num conjunto. A partida podemos não saber o número exacto de elementos a ser agrupados. Em cada instante podemos acrescentar ou remover elemento ao conjunto. Em programação consideramos dois tipos de estruturas que permitem guardar uma colecção de elementos: estrutura estática e estrutura dinâmica. Os elementos podem ser organizados de um modo distinto. Entre as organizações possíveis destacam-se: Linear. Existe uma ordem entre os elementos da colecção. O primeiro elemento, o segundo elemento,..., o último elemento. Hierárquica. A organização de elementos pode ser representada em forma de árvore. Grafo. A organização de elementos pode ser representada em forma de rede. Neste capítulo são descritos exemplos de implementação de uma estrutura linear, utilizando uma estrutura estática e uma estrutura dinâmica. Em seguida é apresentado a interface da estrutura linear. interface estruturalinear // verifica se a estrutura tem elementos public boolean estavazia(); // devolve a quantidade de elementos da estrutura public int tamanho(); // insere um elemento no início da estrutura public void inserir(object p0); // insere um elemento no fim da estrutura public void inserircauda(object p0); // remove um elemento do início da estrutura public Object remover(); // remove um elemento do fim da estrutura public Object removercauda(); Algoritmos e Tipos Abstractos de Informação, 2003 Page 2

3 Estrutura Estática Estrutura estática caracteriza-se por possuir um espaço alocado e inalterável antes da sua utilização. A estrutura estática não pode conter mais elementos do que o previsto inicialmente. A estrutura estática é representada em termos da linguagem de programação JAVA através do uso de tabelas. Numa tabela, uma vez alocado o espaço, este permanece inalterável, independentemente das operações de inserção e de remoção de elementos. Em seguida é apresentado uma implementação da interface estruturalinear por meio da classe ArrayCircularList. Esta implementação baseia-se no uso de uma estrutura estática para guardar os elementos de uma colecção. Optou-se por utilizar uma tabela circular. public class ArrayCircularList implements estruturalinear protected Object[] array; protected int start,end,number; public parraylist(int maxsize) array = new Object[maxsize]; start = end = number = 0; public boolean estavazia() return number == 0; public boolean isfull() return number >= array.length; public int tamanho() return number; public void inserir(object o) if(number < array.length) array[start = (++start % array.length)] = o; number++; public void inserircauda (Object o) if(number < array.length) array[end] = o; end = (--end + array.length) % array.length; number++; public Object remover() if(estavazia()) return null; number--; int i = start; start = (--start + array.length) % array.length; Algoritmos e Tipos Abstractos de Informação, 2003 Page 3

4 return array[i]; public Object removercauda() if(estavazia()) return null; number--; return array[end = (++end % array.length)]; Estrutura Dinâmica Estrutura dinâmica caracteriza-se por poder ser alterada à medida que ocorre a sua manipulação através de inserção e remoção de elementos. A dimensão da estrutura dinâmica não tem limitações, sendo a sua única restrição a limitação física do espaço de memória do computador onde ocorre a execução do algoritmo. A estrutura dinâmica é criada com a utilização do tipo de dado Referencia (apontador). As estruturas dinâmicas podem ser criadas para representar colecções de elementos com diferentes tipos de organização. A estrutura linear pode ser implementada utilizando estruturas dinâmicas representadas pelas listas simplesmente ligadas, listas duplamente ligadas, listas circulares, etc. Em seguida é apresentado um exemplo de utilização destas listas na implementação de interface estruturalinear. Listas simplesmente ligadas/encadeadas Uma lista encadeada é a forma mais simples de representar uma colecção de elementos que juntos formam uma ordenação linear. Cada elemento da colecção é representado pelo objecto da classe No. A ordenação é determinada armazenando num nó uma referência para um elemento e uma referência, chamada de próximo, para o próximo nó da colecção. Algoritmos e Tipos Abstractos de Informação, 2003 Page 4

5 Figure 1. Lista encadeada A referência próximo dentro de um nó pode ser vista como uma ligação ou apontador para outro nó. O primeiro e os últimos nós de uma lista são chamados, respectivamente, de cabeça e cauda da lista. A cauda é um nó que tem a referência próximo igual a null, indica o fim da lista. A deslocação de um nó para outro seguindo a referência próximo é conhecido como caminhar na lista / percorrer a lista. Uma lista encadeada definida desta maneira é conhecida como uma lista simplesmente encadeada. Diferente de uma tabela, uma lista simplesmente encadeada não tem tamanho fixo pré-determinado e aloca espaço proporcionalmente ao número de elementos. Para implementar uma lista simplesmente encadeada em Java, é definida a seguir uma classe No: class No private Object elemento; private No proximo; // construtores public No( ) this( null, null ); public No( Object e, No p ) elemento = e; proximo = p; void setelemento( Object novoelemento ) elemento = novoelemento; Algoritmos e Tipos Abstractos de Informação, 2003 Page 5

6 void setproximo( No novoproximo ) proximo = novoproximo; Object getelemento( ) return elemento; No getproximo( ) return proximo; A interface estruturalinear pode ser implementada usando uma lista simplesmente encadeada na classe ListaEncadeada da seguinte maneira: class ListaEncadeada implements estruturalinear // Referência para a cabeça da lista private No cabeca; // Referência para a cauda da lista private No cauda; // Número de elementos na lista private int tamanho; public ListaEncadeada ( ) // Inicializa a lista cabeca = null; cauda = null; tamanho = 0; public int tamanho( ) //Retorna o tamanho actual da lista return tamanho; public No getcabeca( ) //Retorna retefencia da cabeca da lista return cabeca; public No getcauda( ) //Retorna retefencia da cauda da lista return cauda; public boolean estavazia() return tamanho == 0;... Inserir Elemento na Cabeça da Lista Numa lista simplesmente encadeada podemos inserir ou remover um elemento na cabeça da lista no tempo de execução O(1). Algoritmos e Tipos Abstractos de Informação, 2003 Page 6

7 Figure 2. Antes da inserção Figure 3. Criar novo nó Figure 4. Depois da inserção O código para esta operação é o seguinte: public void inserir(object obj ) No aux = new No (obj, cabeca); if (estavazia()) cauda = aux; cabeca = aux; tamanho ++; Algoritmos e Tipos Abstractos de Informação, 2003 Page 7

8 Inserir Elemento na Cauda da Lista Se não tiver a referencia para o último elemento da lista (cauda), o tempo de execução desta operação é O(n). Isto porque temos que aceder ao endereço do último elemento da lista percorrendo todos os elemento a partir da cabeça da lista. Como no nosso exemplo a representação escolhida para a lista possui uma variável com a referencia para o último elemento (cauda), o tempo de execução desta operação é O(1). Figure 5. Antes da inserção Figure 6. Criar novo no Figure 7. Depois da inserção O código para esta operação é o seguinte: public void inserircauda(object obj ) Algoritmos e Tipos Abstractos de Informação, 2003 Page 8

9 No aux = new No (obj, null); if (estavazia()) cabeca = aux; else cauda.setproximo(aux); cauda = aux; tamanho ++; Remoção do nó Podemos remover um No de cabeça ou de cauda da lista. O método seguinte permite remover o elemento da cabeça da lista. public Object remover() Object obj = null; if (!estavazia()) obj = cabeca.getelemento(); if (cabeca == cauda) cauda = null; cabeca = cabeca.getproximo(); tamanho --; return obj; A remoção do elemento de cauda da lista obriga percorrer os elementos desde a cabeça da lista até ao penúltimo elemento. public Object removercauda() Object obj = null; if (!estavazia()) obj = cauda.getelemento(); if (tamanho() == 1) cabeca = null; cauda = null; else No aux = cabeca; while (aux.getproximo().getproximo()!= null) aux = aux.getproximo(); aux.setproximo(null); cauda = aux; tamanho --; return obj; Algoritmos e Tipos Abstractos de Informação, 2003 Page 9

10 Listas duplamente encadeada/ligadas Cada No da lista duplamente encadeada possui uma ligação não só para o próximo elemento, mas também para o elemento anterior da lista. Esta variante da lista simplesmente encadeada permite a inserção e a remoção na cabeça e na cauda da lista com o tempo de execução O(1). Para implementação deste tipo de lista devemos especificar classe NoD composto por elemento, referência para o elemento seguinte e referência para o elemento anterior. O código desta classe é o seguinte: class NoD private Object elemento; private NoD prox; private NoD prev; public NoD(Object e) elemento=e; prox=null; prev=null; public Object getelemento()return elemento ; public NoD getprox()return prox ; public void setprox(nod no) prox=no; public NoD getprev()return prev ; public void setprev(nod no) prev=no; Assim o código para lista dupla é o seguinte: class ListaDupla implements estruturalinear private NoD cabeca; // guarda o inicio private NoD cauda; // guarda o fim int tam; public ListaDupla() tam=0; cabeca=cauda=null; Algoritmos e Tipos Abstractos de Informação, 2003 Page 10

11 public NoD getcabeca() return cabeca; public boolean estavazia() return (tam==0); public int tamanho() return tam; public void inserir(object e) NoD novo=new NoD(e); if(estavazia()) cabeca=cauda=novo; else cabeca.setprev(novo); novo.setprox(cabeca); cabeca=novo; tam++; public void inserircauda(object e) NoD novo=new NoD(e); if(estavazia()) cabeca=cauda=novo; else cauda.setprox(novo); novo.setprev(cauda); cauda=novo; tam++; public Object remover() Object aux = null; if(!estavazia()) aux = cabeca.getelemento(); if (tam==1) cabeca=cauda=null; else cabeca=cabeca.getprox(); cabeca.setprev(null); Algoritmos e Tipos Abstractos de Informação, 2003 Page 11

12 tam--; return aux; Listas circulares Listas circulares são listas onde o primeiro e último elemento estão ligados. Podemos utilizar a estrutura dinâmica simplesmente encadeada ou duplamente encadeada para implementação da lista circular. Algoritmos e Tipos Abstractos de Informação, 2003 Page 12

Paradigmas de Programação

Paradigmas de Programação Tipos Abstractos de Dados (ADT) Estruturas construídas para armazenar determinados tipos de dados e que especificam operações que permitem a manipulação desses dados. Estudaremos duas das mais simples

Leia mais

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler Aula 14 Listas Duplamente Encadeadas prof Leticia Winkler 1 Lista Duplamente Encadeada É um tipo de lista encadeada que pode ser vazia (NULL) ou que pode ter um ou mais nós, sendo que cada nó possui dois

Leia mais

Estrutura de Dados Listas

Estrutura de Dados Listas Universidade Federal da Paraíba Centro de Informática Departamento de Informática Estrutura de Dados Listas 1 Tiago Maritan [email protected] Conteúdos Abordados O Conceito de Listas Listas com Representação

Leia mais

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS Listas Lineares Como visto anteriormente, as operações básicas para o nosso TAD Lista Linear são: FLVazia Vazia Retira Insere Imprime A implementação através de arrays

Leia mais

Listas - Outras. Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações

Listas - Outras. Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações Listas - Outras Listas Circulares Nós Cabeça Listas Duplamente Ligadas/Encadeadas Aplicações 5 e 7/10/2010 Listas Circulares Encadeadas Dinâmicas Se o nó next do último nó apontar para o primeiro, teremos

Leia mais

ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA (ABORDAGEM RECURSIVA)

ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA (ABORDAGEM RECURSIVA) ESTRUTURAS DE DADOS E ALGORITMOS 1 LISTA LIGADA (ABORDAGEM RECURSIVA) Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande QUESTÕES DE IMPLEMENTAÇÃO Implementacao

Leia mais

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I

Pilhas e Filas Encadeadas. Algoritmos e Estruturas de Dados I Pilhas e Filas Encadeadas Algoritmos e Estruturas de Dados I Pilha Lista linear: pilha Represente graficamente o funcionamento da pilha, representando a pilha vazia, a entrada e a saída de elementos Quais

Leia mais

Lista Ordenada. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Lista Ordenada. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35 Lista Ordenada Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35 Conteúdo Definição Operações Representações Contígua Encadeada Aplicação Exercícios 2

Leia mais

ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA

ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA ESTRUTURAS DE DADOS E ALGORITMOS 1 LISTA LIGADA Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande LISTA LIGADA (LINKED LIST) É uma estrutura de dados em que

Leia mais

ALOCAÇÃO DINÂMICA DE MEMÓRIA

ALOCAÇÃO DINÂMICA DE MEMÓRIA INE5408 Estruturas de Dados Semestre 2008/1 Prof. Leandro J. Komosinski ALOCAÇÃO DINÂMICA DE Memória de Computador 1 byte = 8 bits (ex.: 00100110) 1 KB = 1024 bytes 1 MB = 1024 KB 1 GB = 1024 MB Meu computador

Leia mais

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas UNIP - Ciência da Computação e Sistemas de Informação Estrutura de Dados AULA Pilhas Estrutura de Dados A Estrutura de Dados Pilha Pilha é uma estrutura de dados usada em programação, que tem uma regra

Leia mais

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas Listas Ligadas (Encadeadas) Matrizes são estruturas de dados muito úteis fornecidas nas linguagens de programação. No entanto, elas têm pelo menos duas limitações: 1- Seu tamanho tem que ser conhecido

Leia mais

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Tópicos Listas Encadeadas Introdução às listas encadeadas Manipulação de elementos Implementações recursivas Listas

Leia mais

Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35 Heaps Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35 Conteúdo Introdução Definição de Heap Heap Binária Implementação com vetor Fila de Prioridades

Leia mais

Filas. Prof. Túlio Toffolo BCC202 Aula 12 Algoritmos e Estruturas de Dados I

Filas. Prof. Túlio Toffolo  BCC202 Aula 12 Algoritmos e Estruturas de Dados I Filas Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 12 Algoritmos e Estruturas de Dados I O que é uma fila? 1 4 2 3 Fila 1 2 3 4 TAD Fila Tipo Abstrato de dados com a seguinte característica:

Leia mais

FILAS. As coisas de que uma fila é feita serão chamadas itens. Os itens podem ser números, strings, structs, etc., etc.

FILAS. As coisas de que uma fila é feita serão chamadas itens. Os itens podem ser números, strings, structs, etc., etc. KATIA LIMA FILAS RAFAEL DA SILVA REIAS JEFFERSON DA SILVA OLIVEIRA RAFFAELA LEITE SANTANA EXISTEM MUITOS EXEMPLOS DE FILA NO MUNDO REAL: UMA FILA DE BANCO; NO PONTO DE ÔNIBUS; UM GRUPO DE CARROS AGUARDANDO

Leia mais

Fila e Deque. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Fila e Deque. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Fila e Deque SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic [email protected] Instituto de Ciências

Leia mais

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB [email protected] Listas e Filas Estruturas de Dados 2 Estrututuras de dados lineares Pilhas (stack) Estrutura de dados onde a inserção

Leia mais

Estruturas de Dados I

Estruturas de Dados I Estruturas de Dados I Rodrigo Porfírio da Silva Sacchi [email protected] 3410-2075 Aula 6: Listas Encadeadas e Alocação Dinâmica Listas Encadeadas e Alocação Dinâmica Alocação Seqüencial versus

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 09: Listas (Parte 2) Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes Email:

Leia mais

Tabelas de Dispersão. Estrutura de Dados e Algoritmos

Tabelas de Dispersão. Estrutura de Dados e Algoritmos Tabelas de Dispersão Tabelas de Dispersão Sumário Definição. Características. Resolução de colisões: dispersão com listas e dispersão aberta. Teste quadrático. Desempenho de tabelas de dispersão. Interface

Leia mais

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio Programação II Listas Encadeadas (Linked Lists) Bruno Feijó Dept. de Informática, PUC-Rio Vetores vs Estruturas Dinâmicas Vetores (arrays): Ocupa um espaço contíguo de memória Permite acesso randômico

Leia mais

Tabelas de Dispersão. Tabela de Dispersão

Tabelas de Dispersão. Tabela de Dispersão Tabelas de Dispersão Sumário Definição. Características. Resolução de colisões: dispersão aberta e dispersão fechada. Teste quadrático. Desempenho de tabelas de dispersão. Interface de tabela de dispersão.

Leia mais

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA ÁRVORES E ÁRVORE BINÁRIA DE BUSCA Prof. André Backes Definição 2 Diversas aplicações necessitam que se represente um conjunto de objetos e as suas relações hierárquicas Uma árvore é uma abstração matemática

Leia mais

Lista Encadeada (Linked List)

Lista Encadeada (Linked List) Lista Encadeada (Linked List) As listas ou listas encadeadas são a estrutura de dados mais simples concebível excetuando-se naturalmente os arrays. Listas encadeadas nada mais são que uma seqüência de

Leia mais

Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação

Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 Árvores Estrutura de Dados Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 2 Árvore Binária de Busca Definição: uma árvore binária de busca (ABB) é uma árvore binária na qual

Leia mais

Listas Lineares Ordenadas

Listas Lineares Ordenadas Listas Lineares Ordenadas Algoritmos e Estruturas de Dados I Nesta apresentação será apresentado o ADT lista linear ordenada Uma lista linear ordenada, ou simplesmente lista ordenada há uma ordem entre

Leia mais

Estruturas de Dados Aula 11: TAD Pilha

Estruturas de Dados Aula 11: TAD Pilha Estruturas de Dados Aula 11: TAD Pilha 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

Leia mais

Estruturas de Dados Estruturas de Dados Fundamentais

Estruturas de Dados Estruturas de Dados Fundamentais Estruturas de Dados Estruturas de Dados Fundamentais Prof. Eduardo Alchieri Estruturas de Dados Fundamentais Todos os tipos abstratos de dados (pilhas, filas, deques, etc.) podem ser implementados usando

Leia mais

S U M Á R I O. Definição de Estrutura de Dados. Vetores. Listas Ligadas. Pilhas. Filas

S U M Á R I O. Definição de Estrutura de Dados. Vetores. Listas Ligadas. Pilhas. Filas ESTRUTURA DE DADOS DEBORAH FERREIRA S U M Á R I O Definição de Estrutura de Dados 1 Vetores 2 Listas Ligadas 4 Pilhas 6 Filas 8 D E F I N I Ç Ã O D E E S T R U T U R A D E D A D O S Estruturas de dados

Leia mais

2. Listas 3. Listas ligadas simples 4. Operações dentro das listas 5. Listas Circulares 6. Listas Duplamente Ligadas 7. Pilhas 8.

2. Listas 3. Listas ligadas simples 4. Operações dentro das listas 5. Listas Circulares 6. Listas Duplamente Ligadas 7. Pilhas 8. Profa. Dra. Laura Rodríguez E-mail: [email protected] Universidade da Madeira 1. Introdução 2. Listas 3. Listas ligadas simples 4. Operações dentro das listas 5. Listas Circulares 6. Listas Duplamente Ligadas

Leia mais

Estruturas de Dados Filas

Estruturas de Dados Filas Estruturas de Dados Filas Roteiro Introdução Definição de Fila (Queue) Aplicações Operações sobre Fila Implementação de Fila Com vetores Com listas encadeadas Exercícios Introdução Estamos acostumados

Leia mais

Tipos e Estruturas de Dados Profa. Graça Nunes Lista de Exercícios (Listas Encadeadas, Duplamente Encadeadas e Circulares)

Tipos e Estruturas de Dados Profa. Graça Nunes Lista de Exercícios (Listas Encadeadas, Duplamente Encadeadas e Circulares) Tipos e Estruturas de Dados Profa. Graça Nunes Lista de Exercícios (Listas Encadeadas, Duplamente Encadeadas e Circulares) 1. Refaça todos os itens do exercício 1 da Lista de Exercícios anterior (Listas

Leia mais

Listas Lineares. continuando...

Listas Lineares. continuando... Listas Lineares continuando... 1 Listas! relembrando: listas lineares agrupa informações referentes aum conjunto de elementos que, de alguma forma, se relacionam entre si! Uma lista linear ou está vazia,

Leia mais

Orientação a Objetos AULA 09

Orientação a Objetos AULA 09 Orientação a Objetos AULA 09 Prof. Fabrício Martins Mendonça Conteúdo da Aula ü Coleções ü Coleções lista de objetos ü Coleções conjuntos 2 Coleções Podemos armazenar vários objetos em um array e este

Leia mais

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Introdução aos Algoritmos e Estruturas de Dados Repescagem 2 o Teste - B Ano lectivo: 2010/2011 2 o Semestre RESOLUÇÃO DA REPESCAGEM DO 2 o TESTE I. (2.5 + 2.5 + 3.0 = 8.0 val.) I.a) Considere o tipo Voo

Leia mais

SCC 202 Prova 1. 28/9/2010 Resolução e Comentários

SCC 202 Prova 1. 28/9/2010 Resolução e Comentários SCC 202 Prova 1 28/9/2010 Resolução e Comentários Questão 1) (3.5) Sobre TADs. a) O que é e quais são as vantagens de se utilizar Tipos Abstratos de Dados (TADs) no projeto de desenvolvimento de software?

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Programação II 1º Semestre Frequência 2 Resolução 07/01/2019 1. [1,25 val] - Análise de Complexidade dos Algoritmos Considere o seguinte bloco de código em linguagem C: for

Leia mais

Revisão: Tipo Abstrato de Dados Recursividade

Revisão: Tipo Abstrato de Dados Recursividade Algoritmos e Estrutura de Dados II Revisão: Tipo Abstrato de Dados Recursividade Prof a Karina Oliveira [email protected] Introdução Estudo das estruturas de dados envolve dois objetivos complementares:

Leia mais

Algoritmos e Estruturas de Dados: Lista Duplamente Encadeada

Algoritmos e Estruturas de Dados: Lista Duplamente Encadeada Lista Duplamente Encadeada Interface 1/13 dlist_init void dlist_init(dlist *list, void (*destroy)(void *data)); Algoritmos e Estruturas de Dados: Lista Duplamente Encadeada Rômulo Silva de Oliveira Departamento

Leia mais

Matrizes Esparsas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Matrizes Esparsas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista Matrizes Esparsas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic [email protected] Instituto

Leia mais

Árvores. Estruturas de Dados. Prof. Vilson Heck Junior

Árvores. Estruturas de Dados. Prof. Vilson Heck Junior Árvores Estruturas de Dados Prof. Vilson Heck Junior Árvores INTRODUÇÃO Introdução Árvores são estruturas de dados utilizadas para armazenar e recuperar dados de forma rápida e eficiente; Árvores não são

Leia mais

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 9

Estrutura de Dados. Ricardo José Cabeça de Souza  Parte 9 Estrutura de Dados Ricardo José Cabeça de Souza www.ricardojcsouza.com.br Parte 9 VETOR Ao declararmos um vetor, reservamos um espaço contíguo de memória para armazenar seus elementos Vetor não é uma estrutura

Leia mais

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1 Listas Lineares Elerson R. S. Santos [email protected] Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1 http://www2.dcc.ufmg.br/livros/algoritmos/ Listas Lineares Uma das formas mais simples

Leia mais

Tipos Abstratos de Dados. Estrutura de Dados

Tipos Abstratos de Dados. Estrutura de Dados Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:

Leia mais

Aplicações de listas e outras estruturas. SCC-502 Algoritmos e Estruturas de Dados I

Aplicações de listas e outras estruturas. SCC-502 Algoritmos e Estruturas de Dados I Aplicações de listas e outras estruturas SCC-52 Algoritmos e Estruturas de Dados I Grandes números Problema: lidar com números muito grandes Em C, inteiros (mesmo long int) são limitados Como somar números

Leia mais

Algoritmos e Estruturas de dados

Algoritmos e Estruturas de dados Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores

Leia mais

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira. Algoritmos e Estrutura de Dados II Árvore Prof a Karina Oliveira [email protected] Introdução Estruturas de dados lineares (pilha, fila) são estruturas que guardam coleções de elementos que são acessados

Leia mais

Aula 13: Ordenação - Heapsort. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Aula 13: Ordenação - Heapsort. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Aula 13: Ordenação - Heapsort Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Filas de Prioridades É uma estrutura de dados onde a chave de cada item reflete sua habilidade relativa de abandonar

Leia mais

Algoritmos e Estruturas de Dados II IEC013

Algoritmos e Estruturas de Dados II IEC013 Algoritmos e Estruturas de Dados II IEC013 TAD, Pilhas e Filas Prof. César Melo Todos os créditos ao Prof. Leandro Galvão TAD: Definição SE programa = definição de um tipo de dados + operação sobre dados

Leia mais

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic [email protected] Instituto de

Leia mais

4 Conceito de Herança

4 Conceito de Herança 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 08: Listas (Parte 1) ASN Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Material elaborado com base nos slides do Prof. Reinaldo Fortes (curso

Leia mais

Árvores. Prof. César Melo DCC/ICE/UFAM

Árvores. Prof. César Melo DCC/ICE/UFAM Árvores Prof. César Melo DCC/ICE/UFAM Introdução As estruturas anteriores são chamadas de unidimensionais (ou lineares) Exemplo são vetores e listas Não podem ser usadas como hierarquias. Exemplo: árvore

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação 4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança

Leia mais

Introdução a Programação. Listas Encadeadas

Introdução a Programação. Listas Encadeadas Introdução a Programação Listas Encadeadas Tópicos da Aula Hoje aprenderemos que existem, além de vetores, estruturas de dados dinâmicas que podem armazenar coleções de dados Estruturas Dinâmicas e Vetores

Leia mais

Árvores. Prof. César Melo DCC/ICE/UFAM

Árvores. Prof. César Melo DCC/ICE/UFAM Árvores Prof. César Melo DCC/ICE/UFAM Introdução As estruturas anteriores são chamadas de unidimensionais (ou lineares) Exemplo são vetores e listas Não adequadas para representar hierarquias. Exemplo:

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

Leia mais

Estruturas de Dados Pilhas, Filas, Listas

Estruturas de Dados Pilhas, Filas, Listas PMR2300 Escola Politécnica da Universidade de São Paulo Introdução Estruturas de dados são objetos que armazenam dados de forma eficiente, oferecendo certos serviços para o usuário (ordenação eficiente

Leia mais

Linguagem C: Listas Encadeadas

Linguagem C: Listas Encadeadas Prof. Paulo R. S. L. Coelho [email protected] Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Organização 1 Introdução 2 3 Organização Introdução 1 Introdução 2 3 Introdução Introdução

Leia mais