Tipos Abstractos de Dados (TADs) e Java
|
|
- Marta Estrada Peralta
- 7 Há anos
- Visualizações:
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
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 maisAula 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 maisEstrutura de Dados Listas
Universidade Federal da Paraíba Centro de Informática Departamento de Informática Estrutura de Dados Listas 1 Tiago Maritan tiago@ci.ufpb.br Conteúdos Abordados O Conceito de Listas Listas com Representação
Leia maisLISTAS 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 maisJAVA. José de Siqueira UFMG - ICEx - DCC
ESTRUTURAS DE DADOS JAVA BÁSICAS EM José de Siqueira UFMG - ICEx - DCC 1 o semestre de 2005 O Tipo Abstrato de Dados Pilha O TAD pilha tem quase as mesmas operações apresentadas anteriormente: 1. empilha(o):
Leia maisListas - 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 maisESTRUTURAS 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 maisPilhas 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 maisLista 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 maisESTRUTURAS 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 maisALOCAÇÃ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 maisProfessora Jeane Melo
Professora Jeane Melo Roteiro Lista Encadeada Alocação: Estática x Dinâmica O que são Ponteiros? Ponteiros Variáveis que Armazenam Endereços de Memória Mas, toda variável não é armazenada na memória? Ponteiros
Leia maisUNIP - 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 maisListas 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 maisComputadores 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 maisHeaps. 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 maisFilas. 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 maisFILAS. 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 maisFila 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 paulovic@icmc.usp.br Instituto de Ciências
Leia maisFilas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013
Filas de prioridade Marcelo K. Albertini de Dezembro de / Filas de prioridade O que é uma fila de prioridade? Estrutura de dados que generaliza a ideia de ordenação. Coleções de elementos: inserir e remover
Leia maisFilas de Prioridade. Uma fila de prioridade pode ser vista como uma generalização das filas com as seguintes duas operações:
Filas de Prioridade e Heaps 9.1 Filas de Prioridade Uma fila de prioridade pode ser vista como uma generalização das filas com as seguintes duas operações: inserir um elemento na fila; remover o elemento
Leia maisEstrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB
Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Listas e Filas Estruturas de Dados 2 Estrututuras de dados lineares Pilhas (stack) Estrutura de dados onde a inserção
Leia maisEstruturas de Dados I
Estruturas de Dados I Rodrigo Porfírio da Silva Sacchi rodrigosacchi@ufgd.edu.br 3410-2075 Aula 6: Listas Encadeadas e Alocação Dinâmica Listas Encadeadas e Alocação Dinâmica Alocação Seqüencial versus
Leia maisBCC202 - 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 maisEstrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas
Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 4: Listas Estáticas e Dinâmicas Listas Estáticas: com Vetores Dinâmicas: Listas Ligadas (com ponteiros) Variáveis e Métodos de Controle:
Leia maisTabelas 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 maisProgramaçã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 maisEstruturas de dados para listas arrays e listas ligadas
Estruturas de dados para listas arrays e listas ligadas Fernando Lobo Algoritmos e Estrutura de Dados Algumas figuras retiradas do livro Introduction to Algorithms, 3rd Edition. 1 / 29 Listas Uma lista
Leia maisFilas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014
Filas de prioridade Marcelo K. Albertini de Novembro de / Filas de prioridade O que é uma fila de prioridade? Estrutura de dados que generaliza a ideia de ordenação. Coleções de elementos: inserir e remover
Leia maisTabelas 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 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 maisUniversidade Federal do Ma Curso de Ciência da Computação
Universidade Federal do Ma Curso de Ciência da Computação Estrutura de Dados Prof. Anselmo C. de Paiva Depto de Informática Limitações dos vetores Vetores Simples, Rápidos Mas, é necessário especificar
Leia maisLista 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
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 maisListas 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 maisEstruturas 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 maisEstruturas 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 maisLista Encadeada Simples. Métodos Computacionais Victor Casé
Lista Encadeada Simples Métodos Computacionais 2011.2 Victor Casé O que é? É um Tipo Abstrato de Dados Organizar os dados de forma Linear e Dinâmico Você pode pensar visualmente assim : Linear? Existem
Leia maisANHANGUERA ESTRUTURA DE DADOS AULA 06 LISTAS CIRCULARES E DUPLAMENTE ENCADEADAS. Prof. Thomás da Costa
ANHANGUERA 2015.2 ESTRUTURA DE DADOS AULA 06 Prof. Thomás da Costa thomascosta@aedu.com Vamos ver o PEA : PEA Estrutura de Dados Antes de iniciar a aula, vamos mostrar o andamento do PEA. Vou mostrar as
Leia maisS 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 mais2. 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: lmrodrig@uma.pt 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 maisListas (Parte 1) Túlio Toffolo BCC202 Aula 09 Algoritmos e Estruturas de Dados I
Listas (Parte 1) Túlio Toffolo tulio@toffolo.com.br www.toffolo.com.br BCC202 Aula 09 Algoritmos e Estruturas de Dados I Ementa do Curso Tipos Abstratos de Dados / Alocação Dinâmica Análise de Algoritmos
Leia maisEstruturas 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 maisif (umobjecto!= null && umobjecto instanceof CartaoFidelidade){ titular.equals(((cartaofidelidade) umobjecto).titular) &&
P. Fazendeiro & P. Prata POO - TP03 / 25 _ [... //classe CartaoFidelidade: alguns métodos adicionais] public boolean equals(object umobjecto){ if (umobjecto!= null && umobjecto instanceof CartaoFidelidade){
Leia maisEstruturas de Dados - Filas
Estruturas de Dados - Filas Leandro Tonietto ltonietto@unisinos.br Algoritmos e Estruturas de Dados em C++ Unisinos http://www.inf.unisinos.br/~ltonietto/jed/aed/filas.pdf Abr-8 Uma fila (queue) é uma
Leia maisTipos 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 maisListas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)... árvores e grafos são não lineares!
Listas: a última das 3 estruturas lineares (Pilhas, Filas e Listas)... árvores e grafos são não lineares! 28/9/, 30/9/ e 5/10/2010 Representação/Implementação: Encadeada dinâmica Exercícios Lista Simplesmente
Leia maisListas 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 maisOrientaçã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 maisAlgoritmos 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 maisSCC 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 maisLISTAS. Profa. Me. Andréa Zotovici. São Paulo 2014
LISTAS Profa. Me. Andréa Zotovici São Paulo 214 1 INTRODUÇÃO Tipo Abstrato de Dados. É descrito por propriedades e operações. Quando utilizado não é necessário conhecer detalhes da sua implementação, apenas
Leia maisUNIVERSIDADE 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 maisRevisão: Tipo Abstrato de Dados Recursividade
Algoritmos e Estrutura de Dados II Revisão: Tipo Abstrato de Dados Recursividade Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estudo das estruturas de dados envolve dois objetivos complementares:
Leia maisAlgoritmos 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 maisMatrizes 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 paulovic@icmc.usp.br Instituto
Leia maisListas Encadeadas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes
Listas Encadeadas Fabrício J. Barth BandTec - Faculdade de Tecnologia Bandeirantes Fevereiro de 2011 Tópicos Principais Motivação Listas encadeadas Implementações recursivas Listas de tipos estruturados
Leia maisÁ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 maisDisciplina que estuda as técnicas computacionais para a organização e manipulação eficiente de quaisquer quantidades de informação.
(VWUXWXUDVGH'DGRV 1. Introdução Disciplina que estuda as técnicas computacionais para a organização e manipulação eficiente de quaisquer quantidades de informação. Em um projeto de software, 2 aspectos
Leia maisProgramação Orientada a Objetos II JAVA Décima Aula. Prof. Rogério Albuquerque de Almeida
Programação Orientada a Objetos II JAVA Décima Aula Prof. Rogério Albuquerque de Almeida 1 Programação Orientada a Objeto II Introdução à Estruturas de Dados Alocação Dinâmica Listas, pilhas e filas Construção
Leia maisEstrutura 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 maisListas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1
Listas Lineares Elerson R. S. Santos elerson@dcc.ufmg.br 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 maisAlgoritmos e Estruturas de Dados II IEC013
Algoritmos e Estruturas de Dados II IEC013 Revisão: Listas Encadeadas Prof. César Melo Todos os créditos reservados ao professor Leandro Galvão Listas Encadeadas Listas encadeadas ou listas ligadas representam
Leia maisTabelas Hash Endereçamento Direto
Tabelas Hash Endereçamento Direto ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 11/2008 Material
Leia maisLista Ligada Linear - Retirar elemento
Lista Ligada Linear - Retirar elemento Pretende-se retirar o elemento com valor h da lista: Para isso é necessário modificar o valor do ponteiro para a caixa anterior à do elemento a ser retirado da lista:
Leia maisTipos 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 maisAlgoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1
Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) PIP/CA - Programa Interdisciplinar de Pós-Graduação
Leia maisArrays. int idade1; int idade2; int idade3; int idade4; int[] idades;
Vetores 1 Arrays p O problema: Dentro de um bloco, podemos declarar diversas variáveis e usa -las: int idade1; int idade2; int idade3; int idade4; p Isso pode se tornar um problema quando precisamos mudar
Leia maispior caso nas operações de manipulação é O(N) pior caso surge sistematicamente emusos correntes (ex: elementos previamente ordenados)
Tabelas de Dispersão (Hash( Tables) 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
Leia maisAplicaçõ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 maisAlgoritmos 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 maisDepartamento de Ciência de Computadores Estruturas de Dados (CC114)
1. Cotação de cada pergunta: 1. 30 / 2. 40 / 3. 30 (Total: 100 pontos) 2. Responda às questões de forma clara e concisa nas folhas de exame distribuídas. 1. (Valorização: 30%) Responda às seguintes questões:
Leia maisUniversidade Estadual Paulista Júlio de Mesquita Filho UNESP
Introdução à Computação II AULA 16 BCC Noturno - EMA896115B Prof. Rafael Oliveira olivrap@gmail.com Universidade Estadual Paulista Júlio de Mesquita Filho UNESP Rio Claro 2014 (Sem 2) Estruturas de Dados
Leia maisLinguagem Algorítmica OO. Linguagem Algorítmica
UFSC-CTC-INE INE5384 - Estruturas de Dados Linguagem Algorítmica OO Prof. Ronaldo S. Mello 2002/2 Linguagem Algorítmica Independente de linguagem de programação OO Utilizada para: Exemplificar os algoritmos
Leia maisProf. Walteno Martins Parreira Júnior
Licenciatura em Computação Algoritmos e Estrutura de Dados LISTAS LINEARES Prof. Walteno Martins Parreira Júnior www.waltenomartins.com.br waltenomartins@iftm.edu.br 2016 SUMÁRIO 1 - LISTAS LINEARES...
Leia maisAlgoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.
Algoritmos e Estrutura de Dados II Árvore Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estruturas de dados lineares (pilha, fila) são estruturas que guardam coleções de elementos que são acessados
Leia maisAula 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 maisAlgoritmos 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- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação
Programação 1I Prof. Osório Lista Linear Seqüencial (Alocação Estática) Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação
Leia maisListas 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 paulovic@icmc.usp.br Instituto de
Leia mais4 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 maisBCC202 - 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 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 maisProgramaçã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 maisIntroduçã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 maisProgramação por Objectos. Java
Programação por Objectos Java Parte 5: Associações LEEC@IST Java 1/32 Associação revisão Uma associação representa uma referência entre objectos. Numa associação são definidos: Identificador termo descritivo
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 7: Interfaces LEEC@IST Java 1/31 Interfaces revisão (1) Uma interface é um conjunto de protótipos de métodos (sem implementações) que especifica um serviço bem definido:
Leia maisEstruturas de Dados. Módulo 12 - Filas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1
Estruturas de Dados Módulo 12 - Filas 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
Leia maisAula 7 Encadeamento de Memória
Aula 7 Encadeamento de Memória Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno
Leia maisAplicações de vetores
O TAD Vetor O TAD Vetor extende a noção de arranjo (array) armazenando sequências de objetos arbitrários Um elemento pode ser acessado, inserido ou removido através da especificação de sua colocação (rank)
Leia maisESTRUTURAS DE DADOS E ALGORITMOS HEAP BINÁRIA
ESTRUTURAS DE DADOS E ALGORITMOS 1 HEAP BINÁRIA Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande HEAP BINÁRIA É uma árvore binária satisfazendo duas propriedades:
Leia maisÁ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 maisInterfaces e Classes Internas
e Classes Internas SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade
Leia maisÁ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 maisEstruturas 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 maisLinguagem C: Listas Encadeadas
Prof. Paulo R. S. L. Coelho paulo@facom.ufu.br 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 maisAULA 6. Conceitos. Melhores momentos. Conceitos. Conceitos. Conceitos. Conceitos
Melhores momentos AULA Endereços: a memória é um vetor e o índice desse vetor onde está uma variável é o endereço da variável. Com o operador & obtemos o endereço de uma variável. Exemplos: &i é o endereço
Leia mais