Coleção de Dados. Coleções de Dados Classificação 4/1/2011

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

Download "Coleção de Dados. Coleções de Dados Classificação 4/1/2011"

Transcrição

1 Coleção de Dados Um conjunto de dados(objetos), organizados(estruturados) de alguma forma. As coleções possuem operações padrão como: adicionar; apagar; atualizar As coleções são divididas em dois grandes grupos: Lineares e Não-Lineares LINEARES Neste tipo os objetos são ordenados pela sua posição, ou seja, existe o primeiro objeto, segundo, terceiro, etc. Ex.: Vetor NÃO-LINEARES Neste tipo não existe uma ordem em seus objetos. Ex.: Árvore 8 Coleções de Dados Classificação 9 1

2 Coleções Lineares Considerando a forma de acesso aos objetos as coleções lineares podem ser divididas em três tipos: ACESSO DIRETO ACESSO SEQÜENCIAL ACESSO INDEXADO 10 Coleções Lineares Acesso Direto Neste tipo de coleção linear o acesso aos objetos pode ser feito em qualquer ordem É possível obter o terceiro objeto diretamente sem a necessidade de obter o primeiro e em seguida do segundo. Exemplos Obter elementos Vetor Selecionar uma música em um CD Obter registros em um Arquivo Estruturas de Dados Vetor (Array) Arquivo (File) 11 2

3 Coleções Lineares Acesso Sequencial Neste tipo de coleção linear o acesso aos objetos pode ser feito apenas em uma ordem seqüencial, Para obter o terceiro objeto e necessário primeiramente obter o primeiro e em seguida do segundo. Exemplos Retirar um caminhão estacionado em uma garagem abaixo Obter trechos de uma fita Vídeo Obter trechos de um arquivo de dados Estruturas de Dados Lista (List) Pilha (Stack) Fila (Queue) 12 Coleções Lineares Acesso Indexado Neste tipo de coleção linear o acesso aos objetos é feito a partir de uma chave. A chave deve ser única no conjunto a fim de permitir que a busca seja eficiente Exemplos: CPF, Número Matrícula, Número Conta Bancária Neste tipo de estrutura a chave pode estar armazenada juntamente com o objeto. Exemplo: Dicionário Lista Telefônica (Indexada por: número, Assinante, Categoria) Tabela Hash (Hash Table) Dicionário (Dictionary) 13 3

4 Lista Definição Uma lista é uma coleção de objetos que possuem uma relação de ordem entre si, ou seja, existe o primeiro; segundo; etc. a 1, a 2, a 3,..., a n n 0 Uma lista pode ter 0 ou mais objetos O número n é o TAMANHO da lista Uma LISTA VAZIA não possui objetos. Um lista é dita HOMOGÊNEA quando todos objetos são do mesmo tipo. 14 Lista Estática Utilizada para representar situações onde o número de objetos é FIXO Exemplos: Uma lista contendo disjuntores em um painel(o número máximo é fixo); Lista de equipamentos estocados em uma prateleira (o número de prateleiras é fixo). Lista de cabines telefônicas em uso (o número de cabines é fixo); Lista de passagens vendidas (o número de poltronas disponíveis é fixo); 15 4

5 Lista Dinâmica Utilizada para representar situações onde o número de elementos é variável, sendo que não é possível prever qual será o número máximo de objetos. Exemplos: Lista de circuitos de um painel (Cada painel poderá ter um número qualquer de circuitos); Lista de equipamentos adquiridos; Lista de telefones instalados em uma localidade; Lista de reservas feitas para um determinado vôo; 16 Lista Representação Considerando que a lista é uma coleção de objetos onde existe o primeiro, segundo, etc. Como podemos representá-la? LISTA ESTÁTICA Neste caso os objetos de uma lista estarão contidos em um Vetor LISTA DINÂMICA Neste caso os objetos da lista são alocados de forma dinâmica e um objeto qualquer deve conhecer a posição do seu próximo objeto. 17 5

6 Lista Estática Representação Para criar uma lista estática a partir de um vetor necessitamos basicamente das seguintes informações: Um vetor que conterá os objetos da lista (listdata) Este vetor irá conter um número máximo de objetos (MAXLISTSIZE) O vetor irá utilizar um tipo genérico de dados (T) Um número inteiro que indicará o número de objetos existentes nesta lista (size). Inicialmente o número de objetos é igual a zero. O número de objetos (size) deverá ser sempre menor ou igual que o tamanho do vetor (MAXLISTSIZE) O primeiro objeto será inserido da posição 0 do vetor (listdata) 18 Lista Estática Pontos Fortes x Pontos Fracos PONTOS FORTES Acesso direto indexado a qualquer objeto da lista Tempo constante para acessar o objeto i (depende somente do índice. PONTOS FRACOS Movimentação quando eliminado/ inserido objeto Tamanho máximo fixo, sendo necessário um conhecimento inicial deste número QUANDO UTILIZAR Em situações onde o tamanho máximo pode ser previsto Em situações onde a lista não irá conter um grande número de objetos. 19 6

7 Lista Estática Representação (C++) Lista será vista como uma classe Classe Lista Contém dois atributos Tamanho int size; Elementos T listdata[maxlistsize]; Classe fornecerá operações básicas sobre a lista Representação UML class Domain Objects List - size: int - listdata[maxlistsize]: T 20 Lista Estática Representação C padrão Representada como uma struct Struct List Contém dois membros Tamanho int size; Elementos T listdata[maxlistsize]; Representação C struct List { int size; T listdata[maxlistsize]; ; 21 7

8 Lista Operações Qualquer objeto da lista pode ser recuperado e/ou modificado É possível a inserção de novos objetos na lista É possível a remoção de objetos da lista Lista estática Algumas operações de inserção e remoção exigem um grande esforço Necessitam da movimentação de todos os outros objetos existentes na lista. 22 Lista Operações Recuperação e Modificação (C++) getsize Retorna o número de elementos int getsize(void) const; getfirst Retorna o primeiro de elemento int getfirst(t& elem) const; getlast Retorna o ultimo de elemento int getlast(t& elem) const; getdata Retorna o i-ésimo elemento int getdata(int pos, T& elem) const; //(1 pos size) setdata Altera o i-ésimo elemento int setdata(int pos, T& elem); //(1 pos size) find Encontra a primeira ocorrência bool find(t elem)const; Observação Todas as operações retornam 0 em caso de sucesso e diferente de zero em caso de erro 23 8

9 Lista Operações Recuperação e Modificação (C) getsize Retorna o número de elementos int getsize(struct List* l) const; getfirst Retorna o primeiro de elemento int getfirst(struct List* l, T* elem) const; getlast Retorna o ultimo de elemento int getlast(struct List* l, T* elem) const; getdata Retorna o i-ésimo elemento int getdata(struct List* l, int pos, T* elem)//(1 pos size) setdata Altera o i-ésimo elemento int setdata(struct List* l, int pos, T* elem)//(1 pos size) find Encontra a primeira ocorrência bool find(struct List* l, T elem)const; Observação Todas as operações retornam 0 em caso de sucesso e diferente de zero em caso de erro 24 Lista Operações Inserção Visão Geral O primeiro elemento é inserido na posição 0 do vetor O segundo a próxima posição (1) e assim sucessivamente Para realizar a inserção, em certos casos, é necessária a movimentação de todos os objetos existentes no vetor. Inserção na i-ésima posição, sendo posição < size 25 9

10 Lista Operações Inserção insert - Insere um elemento no final da lista int insert(const T& elem); insertfirst - Insere um elemento no início da lista int insertfirst(const t( t T& elem); insertlast Insere um elemento no final da lista int insertlast(const T& elem); insertat - Insere um elemento em uma posição qualquer int insertat(int pos, const T& elem); insertafter - Insere um elemento após uma posição informada int insertafter(int pos, const T& elem) insertbefore - Insere um elemento antes de uma posição int insertbefore(int pos, const T& elem) Observações O primeiro elemento está na posição 1 e assim sucessivamente ( 1 pos size) Todas as operações retornam 0 em caso de sucesso e diferente de zero em caso de erro 26 Lista Operações Remoção Da mesma forma que a inserção, a remoção em uma lista estática necessita, em certos, casos da movimentação de todos os elementos existentes na lista. Dependendo do tamanho da lista, esta operação exige um esforço computacional extra. Remoção de um elemento da i-ésima posição (posição < size) 27 10

11 Lista Operações Remoção remove - Remove a primeira ocorrência de um elemento int remove(const T&); removefirst - Remove o primeiro elemento da lista int removefirst(t& elem); removelast - Remove o ultimo elemento da lista int removelast(t& elem); Remove um elemento em uma posição especificada int removeat(int pos, T& elem); //(1 pos size) revomeafter - Remove um elemento após uma posição informada int removeafter(int t pos, T& elem); //(1 pos size) removebefore - Remove um elemento antes de uma posição int removebefore(int pos, T& elem); //(1 pos size) Remove todos os elementos da lista int removeall(); 28 Lista Operações Apoio isempty Indica se a lista está (true) ou não (false) vazia bool isempty(void) const; isfull Indica se a lista está (true) ou não (false) cheia bool isfull() const; print Imprime o conteúdo da lista void print(void) const; moveright Move todos os elementos uma posição para a direita a partir da posição da lista recebida int moveright(int pos); moveleft Move todos os elementos uma posição para a esquerda a partir da posição da lista recebida int moveleft(int pos); Observações O primeiro elemento está na posição 1 e assim sucessivamente ( 1 pos size) 29 11

12 Lista Estática Definição CPP (List.h) # include <iostream> # define imaxlistsize 32 typedef int T; class List { private: //Vetor que irá conter os objetos da lista T listdata[ imaxlistsize]; //Número de objetos da lista int isize; public: // constructor List(void); // Metodos Acessores //Recupera o número de objetos da lista int getsize(void) const; /Recupera a informação contida em uma determinada posição int getdata(int, T&) const; 30 Lista Estática Definição CPP (List.h) //Métodos Modificadores //Altera o conteudo da lista em uma determinada posição void setdata(int, T&); //Insere um objeto no final da lista void insert(const T&); //Remove a primeira ocorrência de um objeto da lista void remove(const T&); //Remove o primeiro objeto da lista int removefirst(const T&); //Remove todos os objetos da lista void removeall(void); //Outros métodos //Retorna um valor booleano indicando se a lista é o não vazia bool isempty(void) const; //Encontra a primeira ocorrência de um objeto da lista bool find(t&) const ; // imprime o conteudo da lista void print() const; ; 31 12

13 Lista Estática Implementação CPP (List.cpp) # include <iostream> # include "List.h" using namespace std; List::List(void){ //Tamanho inicial da lista é zero isize = 0; // retorna o número de objetos da lista int List::getSize(void) const{ return isize; 32 Lista Estática Implementação CPP (List.cpp) //Retorna o objeto existente em uma determinada posição da lista //Caso a posição seja inválida, retorna diferente de zero int List::getData(int pos, T& elem) const { if (pos < 0 pos >= isize) { cerr << "Posição inválida!!!" << endl; return 1; elem = listdata[pos]; return 0; //Altera o conteudo da lista em uma determinada posição int List::setData(int pos, T& data) { if (pos < 0 pos >= isize) { cerr << "Posição inválida!!!" << endl; return 1; listdata[pos] = data; return 0; 33 13

14 Lista Estática Implementação CPP (List.cpp) // Insere um objeto no final da lista int List::insert(const T& item){ //Caso o número de posições máximo tenha sido atingindo retorna if (isize >= imaxlistsize){ cerr << "O tamanho máximo da lista foi atingido!" << endl; return 1; // Insere um objeto no final da lista listdata[ isize] = item; // Incrementa o número de objetos isize++; 34 Lista Estática Implementação CPP (List.cpp) // Procura por um item na lista e remove a primeira ocorrência int List::remove(const T& item) { //Inicializa variável ii que será utilizada para percorrer a lista int ii(0); // Procura por um objeto while (ii < isize &&!(item == listdata[ii] )) ii++; //Caso ii seja igual ou maior que isize, então não foi encontrado if (ii == isize) return 1; //Decrementa o tamanho da lista isize--; // move os objetos seguintes da lista para esquerda uma posição, //ou seja o objeto da posição ii+1 será colocado na posição ii while (ii < isize){ listdata[ ii] = listdata[ ii+1] ; ii++; return 0; 35 14

15 Lista Estática Implementação CPP (List.cpp) // Verifica se a lista está vazia bool List::isEmpty(void) const { if (isize == 0) return true; else return false; // Remove todos os objetos da lista void List::removeAll(void){ isize = 0; 36 Lista Estática Implementação CPP (List.cpp) // Remove o primeiro objeto da lista e retorna o valor removido //Caso a posição seja inválida, o programa return diferente de zero int List::removeFirst(T& item) { T frontitem; // Caso a Lista esteja Vazia, finaliza o programa if (isempty()) { cerr << "Erro! Lista vazia..." << endl; return 1; //Recupera o primeiro objeto item = listdata[0] ; //Remove o primeiro objeto remove(item); // retorna o valor removido return 0; 37 15

16 Lista Estática Implementação CPP (List.cpp) //Este método irá percorrer a lista a fim de encontrar o objeto item //Caso o mesmo não seja encontrado retorna false bool List::find(T& item) const { int ii(0); //Caso a lista seja vazia retorna false if (isempty()) return false; //Procura pelo objeto na lista while (ii < isize &&!(item == listdata[ ii] )) ii++; //Caso ii seja igual ao tamanho da lista, indica que o item //nao foi encontrado if (ii == isize) return false; return true; 38 Lista Estática Implementação CPP (List.cpp) //Imprime o conteúdo da lista void List::print()const { int ii(0); //Caso a lista seja vazia retorna if (isempty()){ cout << "Lista Vazia!" << endl; return; cout << "Imprimindo o conteudo da lista..." << endl; while (ii < isize){ cout << "objeto: " << ii << " - " << listdata[ ii] << endl; ii++; 39 16

17 Pilha (Stack) Uma pilha é uma coleção de objetos que possuem uma relação de ordem entre si, ou seja, existe o primeiro; segundo; etc. Na pilha os objetos obedecem ao princípio "Último a entrar - Primeiro a sair" - LIFO (Last-in - First Out) a 1, a 2, a 3,..., a n n 0 Na pilha abaixo, o primeiro objeto a entrar foi o objeto a 1 e o último o objeto an, porém somente é possível a remoção do objeto a n. Para remover o objeto a 1 é necessário antes remover todos os outros objetos e finalmente será possível sua remoção O objeto a n é conhecido como o topo da pilha 40 Pilha (Stack) Uma pilha pode ter 0 ou mais elementos Uma PILHA VAZIA não possui elementos. Uma pilha, pode ser implementada como uma lista onde todas as inserções e remoções são feitas somente em uma de suas extremidades. O topo da pilha pode ser o último ou o primeiro objeto da lista

18 Pilha (Stack) Estática x Dinâmica Assim como a lista a pilha pode ser representada de forma estática ou dinâmica Pilha Estática Neste caso os objetos da pilha estarão contidos em um Vetor Pilha Dinâmica Neste caso os objetos da pilha são alocados de forma dinâmica Um elemento qualquer deve conhecer a posição do seu sucessor 42 Pilha (Stack) Estática Representação Para criar uma pilha estática a partir de um vetor necessitamos basicamente das seguintes informações: Um vetor que irá conter os objetos da pilha (stackdata). Este vetor irá conter um número máximo de objetos (imaxstacksize) O vetor irá utilizar um tipo genérico de dados (T) Um número inteiro que irá indicar o índice do TOPO da pilha (itop). Inicialmente o TOPO da pilha é igual a -1. O TOPO deverá ser sempre menor ou igual ao tamanho máximo do vetor (imaxstacksize) 43 18

19 Pilha Operações É possível a inserção (push) de novos objetos no TOPO da pilha É possível a remoção (pop) somente do objeto que se encontra no TOPO da pilha Somente o objeto que está no TOPO da pilha pode ser recuperado (peek) 44 Pilha Operações Inserção push Insere um elemento no topo da pilha caso a mesma não esteja cheia Retorna uma constante indicando sucesso ou falha int push (const T& item) 45 19

20 Pilha Operações Remoção pop Remove o objeto que se encontra no topo da Pilha Retorna o objeto removido e uma constante indicando sucesso ou falha int pop(t& item) C++ int pop(struct Stack* s, T* item) C removeall Remove todos os objetos que se encontram na Pilha void removeall() 46 Pilha Operações Consulta e Recuperação peek Recupera o elemento que se encontra no TOPO na pilha, sem no entanto retirá-lo Retorna uma constante indicando sucesso ou falha que ocorre quando a pilha está vazia, por exemplo int peek(t& item) getsize - Retorna o número de elementos na pilha int getsize(void) find Encontra a primeira ocorrência de um determinado objeto bool find(t& item) const 47 20

21 Pilha Operações Métodos de Apoio isempty Retorna um booleano indicando se a pilha está ou não vazia bool isempty(void) const; isfull Retorna um booleano indicando se a pilha está ou não cheia bool isfull(void) const; print Imprime o conteúdo da pilha Void print() const; 48 Pilha Definição - C #define MAXSTACKDATA 10 typedef double T; struct Stack { T stackdata[maxstackdata]; int itop; ; 49 21

22 Pilha Definição C++ #define MAXSTACKDATA 10 template <class T> class Stack { private: T stackdata[maxstackdata]; int itop; public: //operacoes ; 50 Pilha Definição Pilha.h # ifndef STACK_CLASS # define STACK_CLASS # include <iostream> # define imaxstacksize 32 typedef int T; class Stack { private: //Vetor que irá conter os elementos da pilha T stackdata[ imaxstacksize]; //Inteiro que indica o índice do topo da pilha int itop; public: //construtor Stack(void) 51 22

23 Pilha Definição Pilha.h //Operações de Modificação //Armazena um item na pilha no topo da pilha void push (const T&); //Remove o topo da pilha T pop (void); //Remove todos os objetos da pilha void removeall(void); //Operações de Consulta // Obtém objeto que se encontra no topo da pilha sem modifica-lo T peek (void) const; int getsize(void); ; #endif bool find(t& item) const; //Métodos de Apoio bool isempty(void) const; bool isfull(void) const; void print()const; 52 Pilha Implementação Pilha.cpp // Construtor do objeto pilha Stack::Stack (void){ itop = -1 //Armazena um item na pilha no topo da pilha int Stack::push (const T& item){ // Verifica se a pilha está cheia, retorna constante indicando erro if (isfull()) { cout << "A pilha está cheia!" << endl; return 1; // incrementa o topo da pilha itop++; //coloca o elemento no topo da pilha stackdata[itop] = item; return 0; 53 23

24 Pilha Implementação Pilha.cpp //Remove o topo da pilha e o elemento que se encontra nesta posição int Stack::pop (T& elem) { // Verifica se a pilha está vazia. Caso esteja retorna condição erro if (isempty()) { cout << "A pilha está vazia!" << endl; return 1; // obtem o elemento que está no topo elem = stackdata[ itop] ; //decrementa o topo da pilha itop--; return 0; 54 Pilha Implementação Pilha.cpp // Obtem o objeto que se encontra no topo da pilha sem modificá-la int Stack::peek (T& item) const { // Verifica se a pilha está vazia. Caso esteja o programa será finalizado if (isempty()) { cout << "A pilha está vazia!" << endl; return 1; item = stackdata[ itop] ; return 0; //Verifica se a pilha está vazia bool Stack::isEmpty(void) const { // Retorna true ou false, dependendo do resultado da comparação return (itop == -1); 55 24

25 Pilha Implementação Pilha.cpp //Verifica se a pilha está cheia bool Stack::isFull(void) const { // Retorna true ou false, dependendo do resultado da comparação return (itop == imaxstacksize-1); // Limpa a pilha void Stack::removeAll(void) { // Coloca o valor do topo como -1 itop = -1; 56 Pilha Implementação Pilha.cpp void Stack::print()const { //Começa a partir do topo int ii(itop); //Caso a pilha seja vazia retorna if (isempty()){ cout << "Pilha Vazia!" << endl; return; cout << "Imprimindo o conteudo da Pilha..." << endl; while (ii >= 0){ cout << "Elemento: " << ii << " - " << stackdata[ ii] << endl; ii--; # endif //STACK_CLASS 57 25

26 Pilha Implementação Pilha.cpp //Verifica se a pilha está cheia bool Stack::isFull(void) const { // Retorna true ou false, dependendo do resultado da comparação return (itop == imaxstacksize-1); // Limpa a pilha void Stack::removeAll(void) { // Coloca o valor do topo como -1 itop = -1; 58 Pilha Implementação Pilha.cpp void Stack::print()const { //Começa a partir do topo int ii(itop); //Caso a pilha seja vazia retorna if (isempty()){ cout << "Pilha Vazia!" << endl; return; cout << "Imprimindo o conteudo da Pilha..." << endl; while (ii >= 0){ cout << "Elemento: " << ii << " - " << stackdata[ ii] << endl; ii--; # endif //STACK_CLASS 59 26

27 Fila Uma fila é uma coleção de objetos que possuem uma relação de ordem entre si, ou seja, existe o primeiro; segundo; etc. Porém na pilha os objetos obedecem ao princípio "Primeiro a entrar - Primeiro a sair" - FIFO (First in First Out) a 1, a 2, a 3,..., a n n 0 Na fila acima, o primeiro objeto a entrar foi o objeto a 1 e o último a n. Somente é possível a remoção do objeto a1 Da mesma forma, caso um novo objeto seja inserido na fila a sua posição será n+1, visto que o último objeto que foi colocado na fila foi a n O objeto a 1 é conhecido como o início da fila O objeto a n é conhecido como o final da fila 60 Fila Definição Uma fila pode ter 0 ou mais objetos Uma FILA VAZIA não possui objetos. Uma fila, pode ser implementada como uma lista onde todas as inserções são feitas em uma extremidade e as remoções são feitas somente na outra extremidade da fila Neste caso o INIICIO da fila pode ser o primeiro elemento da lista O ÚLTIMO elemento da fila será o último da lista 61 27

28 Fila Estática x Dinâmica Assim como a lista a fila pode ser representada de forma estática ou dinâmica FILA ESTÁTICA Neste caso os objetos da fila estarão contidos em um Vetor FILA DINÂMICA Neste caso os objetos da fila são alocados de forma dinâmica Elemento qualquer deve conhecer a posição do seu elemento 62 Fila Estática Representação Inicial Informações necessárias para representar uma fila estática a partir de um vetor: Um vetor que conterá os elementos da Fila (queuedata). Este vetor irá conter um número máximo de elementos (MAXQUEUESIZE) O vetor irá utilizar um tipo genérico de dados (T) A posição 0 indicará o INÍCIO da fila. Um número inteiro indicará a próxima posição disponível no vetor após o final da fila (iback) 63 28

29 Representação Inicial Fila Deficiências Da maneira como a fila está modelada a mesma apresenta deficiências. Por exemplo, supondo que a fila possui um tamanho máximo de 1000 objetos e que esta cheia: Ao remover o objeto que está no TOPO da fila será necessário mover todos os objetos Desta forma a implementação da fila é ineficiente, pois exige um maior esforço computacional 64 Fila Representação Melhorada A fim de melhorar a representação da fila, será acrescentado um novo atributo no objeto. Neste caso será acrescentado um número inteiro (ifront) que indicará o INÍCIO da fila. Quando o objeto que está no início da fila for removido este valor será atualizado, desta forma não será necessário movimentar os objetos 65 29

30 Fila Representação Melhorada Exemplo A última inserção push(2) não é possível, mesmo com posições disponíveis no vetor. Como resolver isto? 66 Fila Representação Final Fila Circular A fim de resolver o problema anterior, será feita a seguinte modificação na fila: Neste caso a fila irá se comportar de maneira circular ou seja: Quando um novo elemento for inserindo última posição do vetor (imaxqueuesize-1) o valor de iback será igual a zero, ou seja a primeira posição do vetor No exemplo a variação do iback deveria ser da seguinte forma: 67 30

31 Fila Representação Final Fila Circular iback deve comportar-se da seguinte forma: Para isto será utilizado o operador módulo (%) Módulo Retorna o resto da divisão inteira Exemplo: 5 % 5 = 0; 5 % MAXQUEUESIZE = 0 Neste caso o incremento de iback será da seguinte forma: iback = (iback + 1) % MAXQUEUESIZE O mesmo comportamento será associado também a ifront ifront= (ifront + 1) % MAXQUEUESIZE 68 Fila Representação Final Fila Circular Exemplo Sendo imaxqueuesize = 6; ifront= 1; iback= 5; Temos a seguinte situação Ao inserir um novo elemento (8) teremos: Desta forma iback e ifront vão variar de 0 a 5, podendo em seguida voltar a 0 Neste caso o vetor é preenchido de forma circular

32 Fila Circular Exemplo 70 Definição Fila.h C++ # ifndef QUEUE_CLASS # define QUEUE_CLASS # include <iostream> //Tamanho Máximo de Elementos na fila const int MAXQUEUESIZE = 32; template <class T> class Queue { private: //vetor com fila e atributos int ifront, iback, isize; T queuedata[maxqueuesize] ; public: //continua

33 Definição Fila.h C++ //Construtor Queue (void); //MODIFICAÇÃO (INSERÇÃO E REMOÇÃO) int push(const T& item); int push(const T& item); int pop(t& item); void removeall(void); //RECUPERAÇÃO DA INFORMAÇÃO T getfront(void) const; T getback(void) const; //MÉTODOS DE APOIO int getsize(void) id) const; int isempty(void) const; int isfull(void) const; ; # endif //QUEUE_CLASS 72 Fila Circular Implementação C++ (Fila.cpp) // inicializa as variáveis membro da fila ifront, iback, isize template <class T> Queue<T>::Queue (void) { ifront = 0; iback = 0; iback = 0; isize = 0; // Recupera o objeto que está no inicio da fila template <class T> T Queue<T>::getFront(void) const { return queuedata[ ifront] ; // Recupera o objeto que se encontra no final da fila template <class T> T Queue<T>::getBack(void) const { return queuedata[iback] ; 73 33

34 Fila Circular Implementação C++ (Fila.cpp) //Recupera o número de elementos na fila template <class T> int Queue<T>::getSize(void) const { return isize; //Insere um elemento na fila int template <class T> void Queue<T>::push (const T& item) { //Finaliza se a fila estiver cheia retorna 1, indicando erro if (isfull()){ return 1; // Incrementa isize isize++; //Coloca o elemento na ultima posicao queuedata[ iback] = item; //Atualiza iback, indicando a ultima posição disponível iback = (iback+1) % imaxqueuesize; 74 Fila Circular Implementação C++ (Fila.cpp) // Remove um elemento da fila e retorna seu valor no parâmetro int template <class T> T Queue<T>::pop(T& item) { // Retorna se a fila estiver vazia if (isempty()){ if (isempty()){ return 1; //Recupera o objeto que esta no inicio da fila e coloca em temp item = queuedata[ ifront] ; // Decrementa o tamanho da fila isize--; //Atualiza o inteiro que representa o inicio da fila, avançando //uma posição ifront = (ifront+1) % imaxqueuesize; //Retorna indicando sucesso return 0; 75 34

35 Fila Circular Implementação C++ (Fila.cpp) // Remove um elemento da fila e retorna seu valor no parâmetro int template <class T> T Queue<T>::pop(T& item) { // Retorna se a fila estiver vazia if (isempty()){ if (isempty()){ return 1; //Recupera o objeto que esta no inicio da fila e coloca em temp item = queuedata[ ifront] ; // Decrementa o tamanho da fila isize--; //Atualiza o inteiro que representa o inicio da fila, avançando //uma posição ifront = (ifront+1) % imaxqueuesize; //Retorna indicando sucesso return 0; 76 Fila Circular Implementação C++ (Fila.cpp) //Verifica que a fila está vazia template <class T> int Queue<T>::isEmpty(void) const { //A fila está vazia quando isize == 0 (número de objetos = 0) return isize == 0; return isize 0; //Verifica que a fila está cheia template <class T> int Queue<T>::isFull(void) const { //A fila está cheia quando isize == imaxqueuesize return isize == imaxqueuesize; //Remove todos os objetos da fila template <class T> void Queue<T>::removeAll(void) { isize = 0; ifront = 0; iback = 0; 77 35

Universidade Federal de Uberlândia Faculdade de Computação

Universidade Federal de Uberlândia Faculdade de Computação Universidade Federal de Uberlândia Faculdade de Computação Prof. Flávio de Oliveira Silva, M.Sc. Março de 2010 2 Sumário Lista de Figuras... 4 1. Introdução... 5 2. Coleção de Dados... 5 2.1 Coleções Lineares...

Leia mais

ESTRUTURA DE DADOS FLÁVIO DE OLIVEIRA SILVA. Estrutura de Dados Flávio de Oliveira Silva 1

ESTRUTURA DE DADOS FLÁVIO DE OLIVEIRA SILVA.  Estrutura de Dados Flávio de Oliveira Silva 1 ESTRUTURA DE DADOS FLÁVIO DE OLIVEIRA SILVA flavio@autoenge.com.br flavio@facom.ufu.br Flávio de Oliveira Silva 1 OBJETIVOS DA DISCIPLINA Apresentar as estruturas de dados pilha, fila, listas e grafos.

Leia mais

Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Trabalho Primeira Etapa Estruturas de Dados Estáticas

Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Trabalho Primeira Etapa Estruturas de Dados Estáticas Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Trabalho Primeira Etapa Estruturas de Dados Estáticas Prof. Flávio de Oliveira Silva, M.Sc. A primeira parte do trabalho consiste em

Leia mais

Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Trabalho Primeira Parte Estruturas de Dados Estáticas

Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Trabalho Primeira Parte Estruturas de Dados Estáticas Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Trabalho Primeira Parte Estruturas de Dados Estáticas Prof. Flávio de Oliveira Silva, M.Sc. A primeira parte do trabalho consiste em

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

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

ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS

ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS TEORIA CONJUNTO ORDENADO DE ITENS NO QUAL NOVOS ITENS PODEM SER INSERIDOS E A PARTIR DO QUAL PODEM SER ELIMINADOS ITENS EM UMA

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

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 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 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

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 paulovic@icmc.usp.br Instituto de

Leia mais

Aula 2 Listas Lineares Sequenciais. prof Leticia Winkler

Aula 2 Listas Lineares Sequenciais. prof Leticia Winkler Aula 2 Listas Lineares Sequenciais prof Leticia Winkler 1 Conteúdo Revisão de Vetor Definição Declaração Acesso dos Elementos Inicialização dos Elementos Exemplo Vetor e Função Lista Linear Operações com

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

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

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out).

A regra de acesso aos dados de uma fila é a seguinte: O primeiro elemento que entra (na fila) é o primeiro que sai (FIFO first in, first out). Fila Algumas aplicações impõem regras de acesso às informações armazenados em estruturas de dados, restringindo como os dados são inseridos e removidos da estrutura. A fila, também conhecida como QUEUE,

Leia mais

Aula 5 e 6 Pilhas e suas Aplicações. prof Leticia Winkler

Aula 5 e 6 Pilhas e suas Aplicações. prof Leticia Winkler Aula 5 e 6 Pilhas e suas Aplicações prof Leticia Winkler 1 Definição de Pilha (Stack) São estruturas de dados do tipo LIFO (last-in first-out) - o último elemento a ser inserido, será o primeiro a ser

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

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

Fila. Algoritmos e Estruturas de Dados I

Fila. Algoritmos e Estruturas de Dados I Fila Algoritmos e Estruturas de Dados I Fila O que é? Para que serve? 2 Biblioteca Problema: automação de uma biblioteca Todos os livros devem ser cadastrados O sistema deve informar se um livro está disponível

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

SCC Algoritmos e Estruturas de Dados I

SCC Algoritmos e Estruturas de Dados I SCC 202 - Algoritmos e Estruturas de Dados I TAD Pilha Lembrem...TADs são tipos definidos em termos de seu comportamento e não de sua representação (que pode variar na busca de eficiência) 12/8/2010 Pilha

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

CIV 2802 Sistemas Gráficos para Engenharia º Trabalho: Programação básica em C++: Classes

CIV 2802 Sistemas Gráficos para Engenharia º Trabalho: Programação básica em C++: Classes CIV 2802 Sistemas Gráficos para Engenharia 2011.1 4º Trabalho: Programação básica em C++: Classes Implementação de uma calculadora RPN (Reversed Polish Notation) Entrega: 05/abril/2011 Pede-se complementar

Leia mais

Pilhas. Profa Morganna Diniz

Pilhas. Profa Morganna Diniz Pilhas Profa Morganna Diniz Pilhas Geralmente pilhas são úteis em situações em que dados devem ser recuperados em ordem inversa a do armazenamento É uma estrutura de dados linear que permite acesso por

Leia mais

Listas Estáticas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Listas Estáticas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista 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 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 tiago@ci.ufpb.br Conteúdos Abordados O Conceito de Listas Listas com Representação

Leia mais

Algoritmos e Estruturas de Dados 2005/2006

Algoritmos e Estruturas de Dados 2005/2006 Pilhas e Filas Algoritmos e Estruturas de Dados 005/006 Pilhas Pilha estrutura de dados linear em que a inserção e a remoção de elementos de uma sequência se faz pela mesma extremidade, designada por topo

Leia mais

Algoritmos e Estruturas de Dados 2007/2008

Algoritmos e Estruturas de Dados 2007/2008 Pilhas e Filas Algoritmos e Estruturas de Dados 007/008 Pilhas Pilha estrutura de dados linear em que a inserção e a remoção de elementos de uma sequência se faz pela mesma extremidade, designada por topo

Leia mais

Estrutura 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 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 mais

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler Aula 3 Listas Lineares Sequenciais Ordenadas prof Leticia Winkler 1 Listas Lineares Sequenciais Ordenadas Elementos da lista estão dispostos num vetor (contíguos na memória) e ordenado de acordo com alguma

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

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

programas = estrutura de dados + algoritmos

programas = estrutura de dados + algoritmos Algoritmos e Estruturas de Dados I1 Prof. Eduardo 1 1. INTRODUÇÃO O mundo tem mudado rapidamente com ajuda dos computadores. Podemos citar as pesquisas espaciais, o projeto genoma, os simuladores de vôo,

Leia mais

Estrutura de Dados: Aula 3 - Linguagem C

Estrutura de Dados: Aula 3 - Linguagem C Estrutura de Dados: Aula 3 - Linguagem C Uso de Memória Alocação de memória Estática Ocorre em tempo de compilação no momento em que se define uma variável ou estrutura é necessário que se definam seu

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

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

Aula 11 Pilha Dinâmica. prof Leticia Winkler

Aula 11 Pilha Dinâmica. prof Leticia Winkler Aula 11 Pilha Dinâmica prof Leticia Winkler 1 Pilha Dinâmica (Dynamic Stack) Pilha implementada através de uma lista linear encadeada. É uma lista linear encadeada em que as operações de inserção e retirada

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

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 LINEARES. Estrutura de Dados

LISTAS LINEARES. Estrutura de Dados LISTAS LINEARES Lista Linear Definição: seqüência de zero ou mais elementos a 1,a 2,...,a n sendo a i elementos de um mesmo tipo n o tamanho da lista linear Propriedade fundamental: os elementos têm relações

Leia mais

Algoritmos e Estruturas de Dados

Algoritmos e Estruturas de Dados Pilhas e Filas Algoritmos e Estruturas de Dados 009/00 Obs: slides marcados com (*) não foram apresentados na aula teórica, mas são parte da bibliografia a estudar! Pilhas Pilha estrutura de dados linear

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

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

Revisão de TDA, Pilhas e Filas

Revisão de TDA, Pilhas e Filas Revisão de TDA, Pilhas e Filas Professor: Santiago Viertel dcc2sv@joinville.udesc.br Sumário Tipos de Dados Abstratos Pilhas Conceito Pilha Estática Filas Conceito Filas Estáticas (FEMR, FEMI e FEC) Tipos

Leia mais

Pilhas. ser acessada somente por uma de suas extremidades. pelo topo. S Uma pilha é uma estrutura linear de dados que pode

Pilhas. ser acessada somente por uma de suas extremidades. pelo topo. S Uma pilha é uma estrutura linear de dados que pode Pilhas e Filas Pilhas Uma pilha é uma estrutura linear de dados que pode ser acessada somente por uma de suas extremidades. Uma pilha é uma lista LIFO (do inglês last-in-first out) o último a entrar é

Leia mais

FICHA 8 PILHAS E FILAS

FICHA 8 PILHAS E FILAS ESTRUTURAS DE DADOS E ALGORITMOS Departamento de Engenharia Eletrotécnica e de Computadores Faculdade de Ciências e Tecnologia da Universidade de Coimbra FICHA 8 PILHAS E FILAS 8.1. Objetivos Objetivos

Leia mais

PCC104 - Projeto e Análise de Algoritmos

PCC104 - Projeto e Análise de Algoritmos PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 27 de setembro de 2018 Marco Antonio

Leia mais

Estruturas 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 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 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 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 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

Pilha. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Pilha. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira Pilha SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Pilha O que é? Para que serve? 2 Problema: chamada de sub-rotinas Rotina A 1 print A 2 call C 3 call B 4 call D 5 return Rotina B 1 call

Leia mais

Algoritmos e Estruturas de Dados 2009/2010

Algoritmos e Estruturas de Dados 2009/2010 Listas Algoritmos e Estruturas de Dados 2009/2010 Tipo de Dados Abstracto TDA conjunto de objectos + conjuntos de operações constituem uma abstracção matemática em C++ são implementados por classes; as

Leia mais

Algoritmos e Estruturas de Dados I

Algoritmos e Estruturas de Dados I Algoritmos e Estruturas de Dados I Prof. Daniel M. Martin (daniel.martin@ufabc.edu.br) Aula 8 Aplicação de Fila Calcular a distância entre pessoas no Facebook Aplicação de Fila Calcular a distância entre

Leia mais

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação. Estruturas de Dados

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação. Estruturas de Dados Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCA UFES Departamento de Computação Estruturas de Dados Tópicos Especiais em Programação Site: http://jeiks.net E-mail: jacsonrcsilva@gmail.com

Leia mais

O container vector funciona como um vetor comum, ou seja, os blocos de objetos estão contíguos, permitindo acesso aleatório.

O container vector funciona como um vetor comum, ou seja, os blocos de objetos estão contíguos, permitindo acesso aleatório. Capítulo 29 class O container vector vai ser apresentado em detalhes. Os demais containers serão apresentados de uma forma simplificada, pois as suas características são semelhantes a vector.

Leia mais

Instituto de C. Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Instituto de C. Filas. Luis Martí Instituto de Computação Universidade Federal Fluminense - Instituto de C Filas Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução

Leia mais

16/11/2015 Lista Tipo de dado Lista - Implementação Lista - Implementação Lista - Implementação 3

16/11/2015 Lista Tipo de dado Lista - Implementação Lista - Implementação Lista - Implementação 3 Listas, pilhas e filas Profa. Vânia de Oliveira Neves Slides baseados no material da Profa. Graça Nunes Listas Lista Lista Uma Lista Linear é uma coleção ordenada de componentes de um mesmo tipo. Ela é

Leia mais

Estruturas de dados e algoritmos fundamentais

Estruturas de dados e algoritmos fundamentais Ministério da Ciência, Tecnologia e Ensino Superior U.C. 21046 Estruturas de dados e algoritmos fundamentais 21 de Junho de 2013 INSTRUÇÕES PARA A RESOLUÇÃO DO EXAME, ACONSELHA-SE QUE LEIA ATENTAMENTE

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

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira Árvores SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Listas e árvores Listas lineares Um nó após o outro, adjacentes Nó sucessor e antecessor Diversas aplicações necessitam de estruturas

Leia mais

ESTRUTURA DE DADOS (TCC )

ESTRUTURA DE DADOS (TCC ) ESTRUTURA DE DADOS (TCC-00.319) Listas lineares Pilhas e Filas Cristina Boeres 2 Manipulando listas lineares! Dependendo do problema a ser resolvidos, existem duas formas especiais (que veremos aqui no

Leia mais

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I Prof. Bruno E. G. Gomes Uma variável em um algoritmo pode ser vista como uma gaveta. A declaração de uma variável reserva uma gaveta (posição) de um certo

Leia mais

EAD PILHA - DEFINIÇÃO

EAD PILHA - DEFINIÇÃO EAD PILHA - DEFINIÇÃO Os seus elementos são processados pela ordem inversa à ordem de chegada: - o último elemento a entrar na Pilha é o primeiro a sair (LIFO Last In First Out ). Qualquer operação que

Leia mais

08/08/2011. Pilha. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Pilha. O que é? Para que serve?

08/08/2011. Pilha. SCC0202 Algoritmos e Estruturas de Dados I. Prof. Thiago A. S. Pardo. Pilha. O que é? Para que serve? Pilha SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Pilha O que é? Para que serve? 2 1 Rotina A 1 print A 2 call C 3 call B 4 call D Rotina B 1 call C 2 print B 3 call D 4 call C

Leia mais

Universidade Estadual Paulista Júlio de Mesquita Filho UNESP

Universidade 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 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

Introdução a Programação. Tipos Abstratos de Dados Implementando Pilha e Fila

Introdução a Programação. Tipos Abstratos de Dados Implementando Pilha e Fila Introdução a Programação Tipos Abstratos de Dados Implementando Pilha e Fila Abstração Abstração é o processo ou resultado de generalização por redução do conteúdo da informação de um conceito ou fenômeno

Leia mais

ASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS ESTRUTURA DE DADOS

ASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS ESTRUTURA DE DADOS ASSOCIAÇÃO PARAIBANA DE ENSINO RENOVADO FACULDADE PARAIBANA DE PROCESSAMENTO DE DADOS ESTRUTURA DE DADOS INTRODUÇÃO O que é uma Estrutura de Dados (ED)?? Tipos de Dados? Estruturas de Dados e? Tipos Abstratos

Leia mais

Algoritmos e Estrutura de Dados Aula 08 Pilhas

Algoritmos e Estrutura de Dados Aula 08 Pilhas Algoritmos e Estrutura de Dados Aula 08 Pilhas Profa. Alana Oliveira e Prof. Davi Viana alanaslz@gmail.com e davi.viana@lsdi.ufma.br Se não entender, pergunte! Dados e Tipos de Dados Um dado é uma informação

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 paulovic@icmc.usp.br Instituto de Ciências

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Estrutura de Dados Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Pilhas e listas Estruturas de Dados 2 Ordenação (Classificação) Rearranjar um conjunto de objetos Ordem ascendente

Leia mais

Fila. Algoritmos e Estruturas de Dados I. Baseado no material de Thiago A. S. Pardo. Debora Medeiros

Fila. Algoritmos e Estruturas de Dados I. Baseado no material de Thiago A. S. Pardo. Debora Medeiros Fila Baseado no material de Thiago A. S. Pardo Algoritmos e Estruturas de Dados I Debora Medeiros Fila O que é? Para que serve? 2 Biblioteca Problema: automação de uma biblioteca Todos os livros devem

Leia mais

Tabelas Hash O Que é uma Tabela Hash? O Que é uma Tabela Hash? O Que é uma Tabela Hash? Inserindo um Novo Registro. O Que é uma Tabela Hash?

Tabelas Hash O Que é uma Tabela Hash? O Que é uma Tabela Hash? O Que é uma Tabela Hash? Inserindo um Novo Registro. O Que é uma Tabela Hash? Tabelas Hash O Que é uma Tabela Hash? Nesta aula são discutidos modos de armazenar informações em um vetor, e depois procurar por uma informação Tabelas Hash constituem uma abordagem comum para o problema

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: 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 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

Pilhas e Filas. Algoritmos e Estruturas de Dados Flavio Figueiredo (http://flaviovdf.github.io)

Pilhas e Filas. Algoritmos e Estruturas de Dados Flavio Figueiredo (http://flaviovdf.github.io) Pilhas e Filas Algoritmos e Estruturas de Dados 2 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Pilhas 2 Pilhas (Stack) Estrutura similar às listas lineares que vimos na última aula [Mais Simples]

Leia mais

Algoritmos e Estruturas de Dados 2005/2006

Algoritmos e Estruturas de Dados 2005/2006 Filas de prioridade Algoritmos e Estruturas de Dados 2005/2006 Filas de prioridade Uma fila de prioridade permite, pelo menos, duas operações sobre um conjunto de valores comparáveis: inserção de um elemento

Leia mais

PCS Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 5: Encapsulamento e Tipo Abstrato de Dados

PCS Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 5: Encapsulamento e Tipo Abstrato de Dados PCS 3111 Laboratório de Programação Orientada a Objetos para Engenharia Elétrica Aula 5: Encapsulamento e Tipo Abstrato de Dados Escola Politécnica da Universidade de São Paulo Agenda Questões Típicas

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

Fila. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Fila. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira Fila SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Fila O que é? Para que serve? 2 Biblioteca Quais são as operações possíveis? Entrar na fila Quem entra, entra onde? Sair da fila Quem sai,

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

Árvores Binárias de Busca

Árvores Binárias de Busca Árvores Binárias de Busca Algoritmos e Estruturas de Dados I Nesta aula será apresentado o ADT árvore binária de busca, também conhecidas como dicionários binários Uma árvore binária de busca é uma estrutura

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 tulio@toffolo.com.br 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

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 20 Jan/2017.

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 20 Jan/2017. Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 20 Jan/2017 4.9. Delegates Exercício 217 4.9. Delegates Repare nas diferenças destes dois casos com e sem Delegates:

Leia mais

Manipulação de Arquivos Binários

Manipulação de Arquivos Binários Introdução à Computação I Departamento de Física e Matemática FFCLRP-USP Prof. Dr. José Augusto Baranauskas IBm1006 1º Semestre/2006 Notas de Aula Manipulação de Arquivos Binários Até agora vimos como

Leia mais

//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void

//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void //conteúdo do arquivo Matriz.h class Matriz private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void setnumerodecolunas(int); int getnumerodelinhas(); int getnumerodecolunas();

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

Universidade Federal do Ma Curso de Ciência da Computação

Universidade 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 mais

Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Listas Encadeadas. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Listas Encadeadas David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Listas Encadeadas Características: Tamanho da lista não é pré-definido Cada elemento guarda quem é o próximo Elementos não

Leia mais

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica) SCC 202 Algoritmos e Estruturas de Dados I Pilhas (Stacks) (implementação dinâmica) Operações alocação encadeada dinâmica typedef struct elem{ tipo_info info; struct elem *lig; tipo_elem; typedef struct{

Leia mais

1. Listas sequenciais versus listas ligadas. Lista sequencial

1. Listas sequenciais versus listas ligadas. Lista sequencial Alocação Dinâmica Listas Ligadas 1. Listas sequenciais versus listas ligadas Lista sequencial Uma lista sequencial é um conjunto de elementos contíguos na memória. Um vetor é o melhor exemplo de lista

Leia mais

Filas. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1

Filas. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Filas Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Índice Introdução Aplicações Implementação / Modelagem Operações de uma fila TAD da Fila em C UDESC - Rui J. Tramontin Jr. 2 Introdução

Leia mais

Exame de Estruturas de Dados 2010.Junho.26

Exame de Estruturas de Dados 2010.Junho.26 Exame de Estruturas de Dados 2010.Junho.26 Duração: 2:30 horas Valorização: 12 valores. 1. Responda às seguintes questões: a) Faça o estudo da complexidade do seguinte método: 1. void fun2(int n, int v[])

Leia mais

Instituto Luterano de Ensino Superior de Ji-Paraná Curso Bacharelado em Informática Estrutura de Dados I Prof.: José Luiz A.

Instituto Luterano de Ensino Superior de Ji-Paraná Curso Bacharelado em Informática Estrutura de Dados I Prof.: José Luiz A. 1 Instituto Luterano de Ensino Superior de Ji-Paraná Curso Bacharelado em Informática Prof.: José Luiz A. Duizith Procedimento Insere_Esquerda (Lista,Valor) Aloque(Aux) Se (Aux = Nil) Senao Aux.Dado Valor

Leia mais

3.2.2 Pilha (LIFO - last in, first out) - Inserção e remoção apenas no final da lista.

3.2.2 Pilha (LIFO - last in, first out) - Inserção e remoção apenas no final da lista. 3. Estruturas Lineares (Listas Lineares) 3.1 Definição Uma lista linear é uma estrutura dinâmica caracterizada por uma seqüência ordenada, no sentido de sua posição relativa, de elementos (nós) L[1], L[2],,

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