Tipos de Dados Abstratos

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

Download "Tipos de Dados Abstratos"

Transcrição

1 Tipos de Dados Abstratos Algoritmos e Estruturas de Dados Verão

2 Tipos Abstratos Um tipo abstrato é: um tipo genérico de dados, dos quais não se conhece os valores uma interface que define os acessos e as operações sobre os dados O conjunto das propriedades algébricas da interface, que delimitam as possíveis implementações. Um programa que usa um tipo abstrato é um cliente. O cliente não tem acesso à implementação. Um programa que especifique o tipo de dados é uma implementação. 2

3 Pilha - Stack Operações abstratas: inicialização; colocação de um elemento na pilha; remoção de um elemento (o último colocado); LIFO indicar se pilha está vazia. interface para uma pilha que contenha inteiros: public interface intstack{ public boolean empty(); public void push(int i); várias public int pop(); Usando a mesma interface, podem ser definidas implementações! 3

4 Pilha - Stack Operações abstratas: inicialização; colocação de um elemento na pilha; remoção de um elemento (o último colocado); LIFO indicar se pilha está vazia. interface para uma pilha genérica: public interface Stack< E > { public boolean isempty(); public E push(e i); várias implementações! public E pop(); public E peek(); Usando a mesma interface, podem ser definidas 4

5 Pilha (Stack) - inserção 5

6 Pilha (Stack) - remoção 6

7 Implementação do tipo pilha usando um array //Não compila!! public class StackArray<E> implements Stack<E>{ private E[] s; private int top; public StackArray(int capacity) { s=new E[capacity]; //! a criação de um array genérico não é permitida em Java public boolean isempty(){ return top == 0; public E peek() { if(isempty()) throw new EmptyStackException(); return s[top-1]; public E push(e item) { if( top == s.length ) return null; s[top++] = item; return item; public E pop() { if(isempty()) throw new EmptyStackException(); E e = s[--top]; s[top] = null; return e; 7

8 Implementação do tipo pilha usando um array public class StackArray<E> implements Stack<E>{ private E[] s; private int top; public StackArray(int capacity) { s= ( E[] ) new Object[capacity]; //solução! public boolean isempty(){ return top == 0; public E peek() { if(isempty()) throw new EmptyStackException(); return s[top-1]; public E push(e item) { if( top == s.length ) return null; s[top++] = item; return item; public E pop() { if(isempty()) throw new EmptyStackException(); E e = s[--top]; s[top] = null; return e; Vantagens: simplicidade. Desvantagens: tamanho máximo limitado à partida. 8

9 Lista Simplesmente Ligada Uma lista ligada é uma colecção de objectos, designados por nós, em que cada um contêm dados e apenas uma referência para outro nó, de modo a formarem uma lista. O primeiro nó é designado por head node. Uma lista ligada diz-se simplesmente ligada quando cada nó contém uma referência para o próximo nó. private class Node<E>{ private E data; private Node next;... Exemplo: :SLinkedList head :Node item next c :Node item next g null 9

10 Implementação do tipo pilha usando um lista ligada public class StackList<E> implements Stack<E>{ private static class Node<E> { E item; Node<E> next; Node(E i, Node<E> n){ item=i; next = n; private Node<E> head; public boolean isempty() {return head == null; public E peek() { if(isempty()) throw new EmptyStackException(); return head.item; public E push(e item) { head = new Node<E>(item, head); return item; public E pop() { if(isempty()) throw new EmptyStackException(); E item = head.item; head = head.next; return item; Vantagens: - aumenta e diminui consoante se inserem ou removem novos elementos na pilha. Desvantagens: - ocupa mais memória. - acesso mais lento. 10

11 Que estrutura de dados escolher? Depende : das operações que sejam mais frequentes no algoritmo a implementar: Se a escolha for entre arrays e listas, dever-se-á escolher: arrays se forem predominantes as operações de acesso e modificação; listas se forem predominantes as operações de inserção e remoção. Usar listas simples, se estas operações ocorrem sempre no início. Usar listas simples com ponteiro adicional para o fim da lista, se a inserção se fizer no fim e a remoção no início. da previsibilidade sobre a memória necessária: o uso de arrays pressupõe que se saiba que memória é suficiente; quando não é previsível é necessário gerir a memória dinamicamente. 11

12 PriorityQueue public interface PriorityQueue<E>{ public void add(e elem, P prio, KeyExtractor<E> keyextractor); public E pick(); public E poll(); public E update(int key, P prio); public void remove(int key); public interface KeyExtractor<E>{ public int getkey(e e); 12

13 Fila-Queue Operações abstratas: inicialização; colocação de um elemento na fila; remoção de um elemento (FIFO); indicar se fila está vazia. interface para uma fila : public interface Queue<E>{ public boolean isempty(); public boolean offer(e i); public E poll(); public E remove(); public E peek(); Usando a mesma interface, podem ser definidas várias implementações! 13

14 Fila (Queue) - inserção 14

15 Fila (Queue) - remoção 15

16 Implementação do tipo fila usando um array public class QueueArray<E> implements Queue<E> { private E[] q; private int size, head, tail; public QueueArray(int maxn) { q=(e[])new Object[maxN]; public boolean isempty() { return size == 0 ; public boolean offer(e e){ if( size == q.length) return false; q[tail] = e; tail = (tail+1) % q.length; ++size; return true; public E remove() { if(isempty()) throw new NoSuchElementException(); E e= q[head]; q[head]= null; head= (head+1)%q.length; --size; return e; public E poll(){ return ( size == 0 )? null : remove(); public E peek() {return ( size == 0 )? null : q[head]; 16

17 Implementação do tipo fila usando uma lista ligada public class QueueList<E> implements Queue<E> { private static class Node<E> { E item; Node<E> next; Node() { next=this; Node(E i, Node<E> n) { item=i; next = n; private Node<E> tail = new Node<E>(); public boolean isempty() { return tail == tail.next; public boolean offer(e e){ tail.next = new Node<E>( e, tail.next ); tail = tail.next; return true; public E remove() { if(isempty()) throw new NoSuchElementException(); Node<E> rem = tail.next.next; tail.next.next = rem.next; if ( rem == tail ) tail = tail.next; return rem.item; public E poll() { return ( isempty() )? null : remove(); public E peek() { return ( isempty())? null : tail.next.next.item; 17

18 ADTs ADTs permitem programação modular: separam o programa em módulos mais pequenos; clientes diferentes podem partilhar a mesma ADT. ADTs permitem o encapsulamento: mantêm-se os módulos independentes; podem-se substituir as várias classes que implementam a mesma interface, sem alterar o cliente. Aspectos do desenho de uma ADT: especificação formal do problema; a implementação tem tendência a tornar-se obsoleta. 18

19 Lista duplamente ligada Inserção 19

20 Lista duplamente ligada Pesquisa 20

21 Lista duplamente ligada Remoção 21

22 Lista Duplamente Ligada public interface DList<E> extends Iterable<E>{ public int size(); public boolean isempty(); public void add(e e); public boolean remove(e e); 22

23 Iteradores public interface Iterable<E> { public Iterator<E> iterator(); public interface Iterator<E> { public boolean hasnext(); public E next(); public void remove(); 23

24 Lista Duplamente Ligada public class DLinkedList1<E> implements DList<E> { private static class DNode<T> { public DNode<T> next, prev; public T key; public DNode() { public DNode(T e ) { key=e; protected int size; protected DNode<E> head; public int size() { return size; public boolean isempty(){ return head == null; public void add(e e) { // Adiciona o elemento no inicio da lista ligada DNode<E> n=new DNode<E>(e); if(head!=null){ n.next=head; head.prev=n; head=n; //(continua...) 24

25 Lista Duplamente Ligada public class DLinkedList1<E> implements DList<E> { //(continuação...) // Remove o primeiro elemento da lista igual a e public boolean remove (E e){ DNode aux=search(e); if(aux!=null){ if(aux.prev!= null) {aux.prev.next = aux.next; else{head = aux.next; if(aux.next!= null){ aux.next.prev = aux.prev; return true; else return false; protected DNode<E> search( E e ){ DNode<E> aux = head; while( aux!= null &&!aux.key.equals(e)) aux=aux.next; return aux; //(continua...) 25

26 Lista Duplamente Ligada public class DLinkedList1<E> implements DList<E> { //(continuação...) public static <E> void show(dnode<e> l){ System.out.print("< "); while(l!= null){ System.out.print(l.key+" "); l = l.next; System.out.println(">"); public void reverse() { DNode<E> iter = head, aux; while( iter!= null ) { head = iter; aux = iter.next; iter.next = iter.prev; iter.prev = aux; iter = aux; //(continua...) 26

27 Lista Duplamente Ligada- Iteradores public class DLinkedList1<E> implements DList<E> { //(continuação...) private class LinkedIterator implements Iterator<E> { // Nó dos dados retornados pelo next() seguinte. protected DNode<E> node = head; /* Nó retornado pelo next() anterior. Como inicialmente não existiu next() referecia null. Depois de um remove() permite assinalar que não existe next() anterior.*/ protected DNode<E> prev = null; // Retorna true se existem mais elementos para iterar. public boolean hasnext() { return node!= null; // Retorna o elemento da posição corrente e avança. public E next() { if ( node == null )throw new NoSuchElementException(); prev = node; node = node.next; // Avança return prev.key; //(continua...) 27

28 Lista Duplamente Ligada- Iteradores public class DLinkedList1<E> implements DList<E> { //(continuação...) public void remove() { // Se a última operação não foi next() lança excepção if ( prev == null ) throw new IllegalStateException(); // Remove o nó do elemnto retornado pelo último next DLinkedList1.this.remove(prev); prev = null; // Assinala que a operação anterior não foi um next() //termina a classe LinkedIterator public Iterator<E> iterator() {return new LinkedIterator(); protected void remove( DNode<E> rem ){ if ( rem.next!= null) rem.next.prev=rem.prev; if ( rem.prev!= null ) rem.prev.next=rem.next; else head = rem.next; --size; //(...) 28

29 Lista com sentinela Inserção 29

30 Lista com sentinela Remoção 30

31 Lista com sentinela Pesquisa 31

32 Lista Duplamente Ligada public interface DCList<E>{ public int size(); public boolean isempty(); public void add(e e); public boolean remove(e e); 32

33 Lista Duplamente Ligada com Sentinela e Circular public class DLinkedList3<E> implements DCList<E>{ private static class DNode<E> { public DNode<E> next, prev; public E key; public DNode() { public DNode(E e ) { key=e; private int size; protected DNode<E> dummy; public DLinkedList3() { dummy=new DNode<E>(); dummy.next= dummy.prev = dummy; public int size() { return size; public boolean isempty() { return dummy.next == dummy; //(continua...) 33

34 Lista Duplamente Ligada com Sentinela e Circular public class DLinkedList3<E> implements DCList<E> { //(continuação...) public E getfirst() { return dummy.next.key; public E getlast() { return dummy.prev.key; // Adiciona o elemento no fim da lista ligada public void add(e e) { DNode<E> n=new DNode<E>(e); ++size; n.prev=dummy.prev; n.next=dummy; dummy.prev.next=n; dummy.prev=n; public boolean remove(e e){ DNode<E> aux=search(e); if(aux!=null){ aux.next.prev=aux.prev; aux.prev.next=aux.next; return true; return false; //(continua..) 34

35 Lista Duplamente Ligada com Sentinela e Circular public class DLinkedList3<E> implements DCList<E> { //(continuação...) public DNode<E> search(e e){ DNode<E> aux=dummy.next; while(aux!=dummy){ if(aux.key.equals(e)){ return aux; aux=aux.next; return null; //(continua...) 35

36 Lista Duplamente Ligada com Sentinela e Circular public class DLinkedList3<E> implements DCList<E> { //(...)/*Move os nós da lista 2 para a lista 1. Assume que as duas listas estão ordenadas *pela ordem dada pelo comparador. A lista 1 permanece ordenada e a lista 2 fica vazia.*/ public static < E > DNode<E> merge( DNode<E> dummy1, DNode<E> dummy2, Comparator<E> cmp) { DNode<E> head1 = dummy1.next; DNode<E> head2 = dummy2.next; while (head1!= dummy1 && head2!= dummy2 ) { if ( cmp.compare( head1.key, head2.key) <= 0 ) head1= head1.next; else { head2.prev = head1.prev; head1.prev.next = head2; head1.prev=head2; head2 = head2.next; head1.prev.next = head1; if ( head2!= dummy2 ) { head1.prev.next = head2; head2.prev = head1.prev; head1.prev = dummy2.prev; dummy2.prev.next = head1; dummy2.next = dummy2.prev = dummy2; return dummy1; 36

37 Lista Duplamente Ligada com Sentinela e Circular public class DLinkedList3<E> implements DList<E>{ //(...)/*Move os nós da lista 2 para a lista 1. Assume que as duas listas estão ordenadas *pela ordem dada pelo comparador. A lista 1 permanece ordenada e a lista 2 fica vazia.*/ public static < E > DNode<E> merge( DNode<E> dummy1, DNode<E> dummy2, Comparator<E> cmp) { DNode<E> head1 = dummy1.next; DNode<E> head2 = dummy2.next; while (head1!= dummy1 && head2!= dummy2 ) { if ( cmp.compare( head1.key, head2.key) <= 0 ) head1= head1.next; else { head2.prev = head1.prev; head1.prev.next = head2; head1.prev=head2; head2 = head2.next; head1.prev.next = head1; if ( head2!= dummy2 ) { head1.prev.next = head2; head2.prev = head1.prev; head1.prev = dummy2.prev; dummy2.prev.next = head1; dummy2.next = dummy2.prev = dummy2; return dummy1; 37

38 Exercício Implementar o algoritmo merge sort para duas listas duplamente ligadas. 38

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

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

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

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

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

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

Lista Ligada. Nó de Lista Ligada

Lista Ligada. Nó de Lista Ligada Lista Ligada Estrutura com nós que armazenam elementos manter referências para elementos do início e fim da lista Operações Inserir: a seguir à posição corrente Remover: na posição corrente Pesquisar:

Leia mais

CES-11. Pilhas Definição Operações Filas. Operações Deques. Definição. Operações

CES-11. Pilhas Definição Operações Filas. Operações Deques. Definição. Operações CES-11 Pilhas Definição Operações Filas Definição Operações Deques Definição Operações PILHAS, FILAS E DEQUES As listas lineares admitem inserção e eliminação em qualquer posição. Pilhas, filas e deques

Leia mais

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins Prova PMR0 o semestre 0 Prof Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço ( pontos) Uma árvore binária de busca é uma árvore binária na qual para qualquer sub-árvore

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro Java Collections Framework (JCF) Uma coleção (collection) é um objeto que agrupa vários elementos. A JCF consiste numa arquitetura para representação e manipulação de coleções. Contém: - Um conjunto de

Leia mais

Estruturas de Dados Encadeadas

Estruturas de Dados Encadeadas CURSO: Ciência da Computação DATA: / / 2016 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 14 APRESENTAÇÃO Na aula de hoje vamos apresentar e discutir conceitos

Leia mais

Collections. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Collections. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Collections Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira ([email protected]) Coleções em Java As coleções agrupam vários

Leia mais

API e Coleções Java. Sérgio Luiz Ruivace Cerqueira

API e Coleções Java. Sérgio Luiz Ruivace Cerqueira API e Coleções Java Sérgio Luiz Ruivace Cerqueira [email protected] Java API Introdução API Endereço http://download.oracle.com/javase/6/docs/api/ API - Descrição API - Resumo API - Detalhes Coleções

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

Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas

Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas Algoritmos e Estruturas de Dados Lição n.º 3 Coleções: sacos, pilhas e filas Coleções: sacos, pilhas e filas Especificação das coleções Classes iteráveis Sacos (em inglês bags) Implementação com arrays

Leia mais

Coleções em Java. Prof. Gustavo Willam Pereira ENG10082 Programação II. Créditos: Prof. Clayton Vieira Fraga Filho

Coleções em Java. Prof. Gustavo Willam Pereira ENG10082 Programação II. Créditos: Prof. Clayton Vieira Fraga Filho Coleções em Java Prof. Gustavo Willam Pereira ENG10082 Programação II Créditos: Prof. Clayton Vieira Fraga Filho Introdução O que é uma coleção? Um objeto que agrupa múltiplos elementos em uma única unidade

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

Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins

Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço. Os códigos fornecidos na seção Códigos-fonte de apoio podem ser referenciados

Leia mais

Pilhas Filas e Listas

Pilhas Filas e Listas Pilhas Filas e Listas Sumário Pilha: interface, aplicações e implementação Fila: interface, aplicações e implementação Lista Ligada: interface, aplicações e implementação Pilha Estrutura LIFO (last in,

Leia mais

Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas

Algoritmos e Estruturas de Dados. Lição n.º 3 Coleções: sacos, pilhas e filas Algoritmos e Estruturas de Dados Lição n.º 3 Coleções: sacos, pilhas e filas Coleções: sacos, pilhas e filas Especificação das coleções Classes iteráveis Sacos (em inglês bags) Implementação com arrays

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

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções Implementação de Genéricos, Iteradores Isabel Harb Manssour Porto Alegre, maio de 2006 Roteiro Implementação de Genéricos Coleções Conceito de Genérico Implementação Iteradores Conceito Utilização ForEach

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

LISTA DUPLAMENTE ENCADEADA

LISTA DUPLAMENTE ENCADEADA COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO LISTA DUPLAMENTE ENCADEADA FOZ DO IGUAÇU 2013 LISTA DE QUADROS QUADRO 1 EXEMPLO DE UM NÓ PARA

Leia mais

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

REVISÃO DE PILHAS E FILAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE PILHAS E FILAS Vanessa Braganholo Estruturas de Dados e Seus Algoritmos PILHAS E FILAS São tipos especiais de listas com disciplina restrita de acesso Acesso Consulta Inserção Remoção Disciplina

Leia mais

Estruturas Compostas Parte II

Estruturas Compostas Parte II Estruturas Compostas Parte II Filas e Pilhas Leonardo Tórtoro Pereira Slides fortemente baseados no material do professor Ricardo Farias: http://www.cos.ufrj.br/~rfarias/cos121/ Pilhas Pilhas Também conhecida

Leia mais

4. Listas, Pilhas, e Filas

4. Listas, Pilhas, e Filas 4. Listas, Pilhas, e Filas Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 4. Listas, Pilhas, e Filas Estruturas de Dados 1 / 49 Definição de Lista (1) Uma lista é uma sequência finita

Leia mais

4. Listas, Pilhas, e Filas

4. Listas, Pilhas, e Filas 4. Listas, Pilhas, e Filas Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 4. Listas, Pilhas, e Filas Estruturas de Dados 1 / 49 Definição de Lista (1) Uma lista é uma sequência finita

Leia mais

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing,

Filas. Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing, Filas Nesta aula veremos o ADT fila Em um computador existem muitas filas esperando pela impressora, acesso ao disco ou, num sistema timesharing, pelo uso da CPU Algoritmos e Estruturas de Dados I José

Leia mais

Coleções. Prof. Marcelo Roberto Zorzan

Coleções. Prof. Marcelo Roberto Zorzan Coleções Prof. Marcelo Roberto Zorzan Coleções Aula de Hoje Introdução Coleções podem representar estruturas de dados complexas de forma transparente para o programador. Exemplos: Músicas favoritas armazenadas

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

Pilhas. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP

Pilhas. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP Pilhas Algoritmos e Estruturas de Dados I Nesta aula veremos o ADT pilha Uma pilha é usada em muitas situações tais como avaliação de expressões aritméticas, chamada e retorno de procedimentos e funções

Leia mais

Laboratório de programação II

Laboratório de programação II Laboratório de programação II Standard Template Library (STL) Edson Moreno [email protected] http://www.inf.pucrs.br/~emoreno Standard Template Library Biblioteca padronizada de funções Oferece um

Leia mais

Algoritmos e Estruturas de Dados. Lição n.º 4 Pilhas

Algoritmos e Estruturas de Dados. Lição n.º 4 Pilhas Algoritmos e Estruturas de Dados Lição n.º 4 Pilhas Pilhas Implementação com arrays redimensionáveis. Implementação com listas ligadas. Aplicação: avaliação de expressões aritméticas usando o algoritmo

Leia mais

Filas Implementação Sequencial

Filas Implementação Sequencial SCE 202 182 Algoritmos e Estruturas de Dados I Filas Implementação Sequencial Conceito Coleção ordenada de itens (lista ordenada) em que a inserção de um novo item se dá em um dos lados no fim e a remoção

Leia mais

Listas Ligadas, Pilhas e Filas

Listas Ligadas, Pilhas e Filas Listas Ligadas, Pilhas e Filas Pedro Ribeiro DCC/FCUP 2017/2018 (baseado e/ou inspirado parcialmente nos slides de Luís Lopes e de Fernando Silva) Pedro Ribeiro (DCC/FCUP) Listas Ligadas, Pilhas e Filas

Leia mais

Paradigmas da Programação PPROG. Linguagem JAVA. Contentores de Objetos

Paradigmas da Programação PPROG. Linguagem JAVA. Contentores de Objetos PPROG Paradigmas da Programação Linguagem JAVA Contentores de Objetos Nelson Freire (ISEP DEI-PPROG 2012/13) 1/33 Contentores Sumário Noção de Contentor Categorias de Contentores Conjunto Lista Fila de

Leia mais

Aplicações de vetores

Aplicaçõ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 mais

Árvores e Mapas. Luís Lopes. Estruturas de Dados DCC-FCUP

Árvores e Mapas. Luís Lopes. Estruturas de Dados DCC-FCUP Árvores e Mapas Luís Lopes DCC-FCUP Estruturas de Dados Estruturas não lineares Os arrays e as listas são exemplos de estruturas de dados lineares, cada elemento tem: um predecessor único (excepto o primeiro

Leia mais

Laboratório de Programação. Aula 13 Java 5COP088. Aula 13 Genéricos e Conjuntos Java Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr barbon@uel.

Laboratório de Programação. Aula 13 Java 5COP088. Aula 13 Genéricos e Conjuntos Java Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr barbon@uel. 5COP088 Laboratório de Programação Aula 13 Genéricos e Conjuntos Java Prof. Dr. Sylvio Barbon Junior 1 Sumário: 1) Métodos hashcode(), equals() e tostring(); 2) Conjuntos; 3) Genéricos; 4) Resumo. 2 1)

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

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 05 Padrões GoF (Singleton e Iterator) Edirlei Soares de Lima Padrões GoF Criação: Abstract Factory Builder Factory Method Prototype

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) [email protected]

Leia mais

JAVA COLLECTIONS API: LISTAS

JAVA COLLECTIONS API: LISTAS COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO JAVA COLLECTIONS API: LISTAS FOZ DO IGUAÇU 2013 LISTA DE QUADROS QUADRO 1 EXEMPLO DE LIST,

Leia mais

Tabelas de Dispersão. Algoritmos e Estruturas de Dados Verão Cátia Vaz 1

Tabelas de Dispersão. Algoritmos e Estruturas de Dados Verão Cátia Vaz 1 Tabelas de Dispersão Algoritmos e Estruturas de Dados Verão 2012 1 Tabelas de endereçamento directo Endereçamento directo é usado quando o universo de chaves é pequeno e todas as chaves são distintas:

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

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla. Java First-Tier: plicações Orientação a Objetos em Java (III) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Herança: Simples Múltipla O tipo de herança que usamos até agora é chamado

Leia mais

Estruturas de Dados. Túlio Toffolo BCC402 Aula 02 Algoritmos e Programação Avançada

Estruturas de Dados. Túlio Toffolo  BCC402 Aula 02 Algoritmos e Programação Avançada Estruturas de Dados Túlio Toffolo [email protected] www.toffolo.com.br BCC402 Aula 02 Algoritmos e Programação Avançada Estruturas de dados elementares Arranjos (arrays) Pilhas (stacks) Filas (queues)

Leia mais

Tipos Abstractos de Dados (TADs) e Java

Tipos Abstractos de Dados (TADs) e Java 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

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

COLECÇÕES DE OBJECTOS EM JAVA6

COLECÇÕES DE OBJECTOS EM JAVA6 COLECÇÕES DE OBJECTOS EM JAVA6 ESTUDO DO JAVA COLLECTIONS FRAMEWORK 5.0 PARTE I F. Mário Martins DI/Universidade do Minho 2007/2008 F. Mário Martins 2007/2008 Colecções de JAVA6 (Parte I) 1 COMPOSIÇÃO/AGREGAÇÃO

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

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

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação

Leia mais

Capítulo VIII. Tipo Abstracto de Dados Dicionário. Acesso por Chave

Capítulo VIII. Tipo Abstracto de Dados Dicionário. Acesso por Chave Capítulo VIII Tipo Abstracto de Dados Dicionário Acesso por Chave Margarida Mamede, DI FCT/UNL AED, 2009/10, Capítulo VIII 1 Interface Dicionário (K,V) (1) package datastructures; public interface Dictionary

Leia mais

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010 Filas de prioridade Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010 Qual a Utilidade das Filas de Prioridade? Trabalhos maiores devem ser executados no fim (mesmo que não tenha sido o último

Leia mais

Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler

Aula 7 e 8 Filas e suas Aplicações. Prof. Leticia Winkler Aula 7 e 8 Filas e suas Aplicações Prof. Leticia Winkler 1 Definição de Fila (Queue) São estruturas de dados do tipo FIFO (first-in first-out) - o primeiro elemento a ser inserido, será o primeiro a ser

Leia mais