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

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

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

Transcrição

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

2 OBJETIVOS DA DISCIPLINA Apresentar as estruturas de dados pilha, fila, listas e grafos. Desenvolver as técnicas para sua representação e os métodos de operação sobre as mesmas Possibilitar a escolha de estruturas adequadas à solução de problemas de representação da informação Flávio de Oliveira Silva 2

3 EMENTA 1. Revisão: Programação orientada à objetos utilizando C Filas 3. Listas 4. Grafos Flávio de Oliveira Silva 3

4 BIBLIOGRAFIA AMMERAAL, L. Programs and Data Structres in C. Essex: John Wiley & Sons, AHO, A. V. et alli. Data Structure and Algorithms TENENBAUM, A. M. et alli. Estruturas de Dados Usando C. Rio de Janeiro: Makron Books, 1995 SZWARCFITER, J. L. Grafos e Algorítmos Computacionais Rio de Janeiro: Ed. Campus, 1984 ESAKOV, J. Data Structres: An Advanced Approach Using C. New Jersey: Prentice Hall, 1986 Flávio de Oliveira Silva 4

5 AVALIAÇÃO Provas Teóricas Primeira Prova C Pontos Segunda Prova 25 Pontos Terceira Prova 25 Pontos Trabalho Projeto Conclusão de Curso 25 Pontos Executado em Etapas Executado em Grupo; Apresentação e Avaliação Individual OBSERVAÇÕES Material Apoio Pasta 122 Xerox ao lado Bloco B Atendimento Quarta-Feira 16:00 16:50 Sala 1B54 Sexta-Feira 15:00 16:00 Sala 1B54 Aulas Práticas no laboratório Flávio de Oliveira Silva 5

6 O entendimento das várias estruturas de dados disponíveis é um ponto central no desenvolvimento de soluções computacionais a vários problemas do mundo real. Permite uma maior compreensão lógica de como resolver problemas As estruturas de dados representam maneiras de se organizar os dados (objetos) manipulados por um programa. Um programa faz uso de diferentes estruturas de dados, conforme sua necessidade As estruturas de dados serão estudas como objetos Flávio de Oliveira Silva 6

7 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 Flávio de Oliveira Silva 7

8 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 ACESSO DIRETO Neste tipo de coleção linear o acesso aos objetos pode ser feito em qualquer ordem, ou seja, é possível obter o terceiro objeto diretamente sem a necessidade de obter o primeiro e em seguida do segundo. Ex.: Vetor; Música em um CD A 0 A 1 A 2 A i A n-1 i Flávio de Oliveira Silva 8

9 COLEÇÕES LINEARES ACESSO SEQÜENCIAL Neste tipo de coleção linear o acesso aos objetos pode ser feito apenas em uma ordem seqüencial, ou seja, para obter o terceiro objeto e necessário primeiramente obter o primeiro e em seguida do segundo. Ex.: Retirar um caminhão estacionado em uma garagem; Obter trechos de uma fita Vídeo ACESSO INDEXADO Neste tipo de coleção linear o acesso aos objetos é feito a partir de uma chave. Neste tipo de estrutura a chave pode estar armazenada juntamente com o objeto. Ex.: Dicionário Flávio de Oliveira Silva 9

10 COLEÇÃO DE DADOS Coleções Lineares Não-Lineares Acesso Direto Acesso Sequencial Acesso Indexado Hierarquicas Agrupadas Vetor Arquivo Pilha Lista Fila Dicionário Tabela Hash Árvore Heap Conjunto Grafo Flávio de Oliveira Silva 10

11 LISTA Uma lista é uma coleção de objetos que possuem uma relação de ordem entre si, ou seja, existe o primeiro; segundo; etc. D D D «D Q Qt Uma lista pode ter 0 ou mais objetos O número Qé o 7$0$1+2 da lista Uma /,67$9$=,$ não possui objetos. Um lista é dita +202*Ç1($ quando todos objetos são do mesmo tipo. Flávio de Oliveira Silva 11

12 LISTA Considerando que a lista é uma coleção de objetos onde existe o primeiro, segundo, etc. Como podemos representa-lá? LISTA ESTÁTICA Neste caso os objetos de uma lista estarão contidos em um Vetor A 1 A 2 A 3 A i A n 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. A 1 A 2 A... 3 A... i A n Flávio de Oliveira Silva 12

13 LISTA LISTA ESTÁTICA Utilizada para representar situações onde o número de objetos é IL[R. Ex: 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); LISTA DINÂMICA Utilizada para representar situações onde o número de objetos irá YDULDU a medida que a lista é utilizada, sendo que não é possível prever qual será o número máximo de objetos. Ex: Projeto de circuitos de um painel (No projeto 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; Flávio de Oliveira Silva 13

14 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 irá conter os objetos da lista (OLVW'DWD). Este vetor irá conter um número máximo de objetos (L0D[/LVW6L]H ) O vetor irá utilizar um tipo genérico de dados (7) Um número inteiro que irá indicar o número de objetos existentes nesta lista (L6L]H). Inicialmente o número de objetos é igual a zero. O número de objetos (L6L]H) deverá ser sempre menor ou igual que o tamanho do vetor (L0D[/LVW6L]H) int isize; T listdata imaxlistsize Flávio de Oliveira Silva 14

15 LISTA ESTÁTICA 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. Flávio de Oliveira Silva 15

16 OPERAÇÕES SOBRE UMA LISTA 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 Na lista estática algumas operações de inserção e remoção exigem um grande esforço pois necessitam da movimentação de todos os outros objetos existentes na lista. Flávio de Oliveira Silva 16

17 OPERAÇÕES SOBRE UMA LISTA Serão definidas as seguintes operações para uma lista: RECUPERAÇÃO e MODIFICAÇÃO DA INFORMAÇÃO JHW6L]H ± 5HWRUQDRQ~PHURGHREMHWRV LQWJHW6L]HYRLGFRQVW getfirst Retorna o primeiro objeto(objeto da classe T) 7JHW)LUVWFRQVW getlast Retorna o último objeto 7JHW/DVWFRQVW JHW'DWD ± 5HWRUQDXPREMHWRTXDOTXHU 7JHW'DWDLQWFRQVW VHW'DWD Altera um objeto em uma determinada posição - YRLGVHW'DWDLQW7 ILQG ± (QFRQWUDDSULPHLUDRFRUUrQFLDGHXP GHWHUPLQDGRREMHWR ERROILQG7 FRQVW Flávio de Oliveira Silva 17

18 OPERAÇÕES SOBRE UMA LISTA MÉTODOS DE APOIO LV(PSW\ ± 5HWRUQDXPERROHDQR LQGLFDQGRVHD OLVWDHVWiRXQmRYD]LD ERROLV(PSW\YRLGFRQVW print Imprime o conteúdo da lista YRLGSULQWFRQVW INSERÇÃO DE NOVOS OBJETOS Para realizar a inserção, em certos casos, é necessária a movimetação de todos os objetos existentes no vetor i i+1 i+2... n-1 n isize = OLQVHUW)LUWVW isize = i i+1 i+2... n-1 n,qvhuomr GRLpVLPRREMHWR Flávio de Oliveira Silva Lista após inserção 18

19 OPERAÇÕES SOBRE UMA LISTA INSERÇÃO DE NOVOS OBJETOS LQVHUW ±,QVHUHXPREMHWRQRILQDOGDOLVWD YRLGLQVHUWFRQVW 7 insertfirst Insere um objeto no início da lista YRLGLQVHUW)LUVWFRQVW 7 insertlast Insere um objeto no final da lista YRLGLQVHUW/DVWFRQVW 7 insertat Insere um objeto em uma posição qualquer YRLGLQVHUW$WLQWFRQVW 7 insertafter Insere um objeto após uma determinada posição YRLGLQVHUW$IWHULQWFRQVW 7 insertbefore Insere um objeto antes de uma determinada posição YRLGLQVHUW%HIRUHLQWFRQVW 7 Flávio de Oliveira Silva 19

20 OPERAÇÕES SOBRE UMA LISTA REMOÇÃO DE OBJETOS 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 objetos existentes na lista. Dependendo do tamanho da lista, esta operação exige um esforço computacional extra i i+1 i+2... n-1 n i i+1 i+2... n-1 n 5HPRomRGRLpVLPRREMHWR isize = OUHPRYH isize = Lista após remoção Flávio de Oliveira Silva 20

21 OPERAÇÕES SOBRE UMA LISTA REMOÇÃO DE OBJETOS UHPRYH± 5HPRYHDSULPHLUDRFRUUrQFLDGHXP REMHWR YRLG UHPRYHFRQVW 7 UHPRYH)LUVW ± 5HPRYHRSULPHLURREMHWRGDOLVWD 7UHPRYH)LUVWYRLG removelast Remove o último objeto da lista 7UHPRYH/DVWYRLG removeat Remove um objeto em uma posição indicada 7UHPRYH$WLQW UHPRYH$OO ± 5HPRYHWRGRVRVREMHWRV YRLGUHPRYH$OOYRLG Flávio de Oliveira Silva 21

22 DEFINIÇÃO DA LISTA List.h # include < iostream> # define imaxlistsize 32 template < class 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 T getdata(int) const; Flávio de Oliveira Silva 22

23 DEFINIÇÃO DA LISTA 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 T removefirst(void); // 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; Flávio de Oliveira Silva 23

24 DEFINIÇÃO DA LISTA List.cpp # include < iostream> # include "List.h" using namespace std; template < class T> List< T> ::List(void){ //Tamanho inicial da lista é zero isize = 0; // retorna o número de objetos da lista template < class T> int List< T> ::getsize(void) const{ return isize; Flávio de Oliveira Silva 24

25 DEFINIÇÃO DA LISTA List.cpp //Retorna o objeto existente em uma determinada posição da lista // Caso a posição seja inválida, o programa será finalizado! template < class T> T List< T> ::getdata(int pos) const { // Termina o programa caso a posição seja inválida if (pos < 0 pos > = isize) { cerr < < "Posição inválida!!!" < < endl; exit(); return listdata[pos]; //Altera o conteudo da lista em uma determinada posição template < class T> void List< T> ::setdata(int pos, T& data) { if (pos < 0 pos > = isize) { cerr < < "Posição inválida!!!" < < endl; exit(1); listdata[ pos] = data; Flávio de Oliveira Silva 25

26 DEFINIÇÃO DA LISTA List.cpp //Insere um objeto no final da lista template < class T> void List< T> ::insert(const T& item){ // Caso o número de posições máximo tenha sido atingindo o //metódo retorna if (isize > = imaxlistsize){ cerr < < "O tamanho máximo da lista foi atingido!" < < endl; return; // Insere um objeto no final da lista listdata[ isize] = item; // Incrementa o número de objetos isize+ + ; Flávio de Oliveira Silva 26

27 DEFINIÇÃO DA LISTA List.cpp // Procura por um item na lista e remove a primeira ocorrência template < class T> void List< T> ::remove(const T& item) { //Inicializa uma 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; // 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+ + ; Flávio de Oliveira Silva 27

28 DEFINIÇÃO DA LISTA List.cpp // Verifica se a lista está vazia template < class T> bool List< T> ::isempty(void) const { if (isize = = 0) return true; else return false; // Remove todos os objetos da lista template < class T> void List< T> ::removeall(void){ isize = 0; Flávio de Oliveira Silva 28

29 DEFINIÇÃO DA LISTA List.cpp // Remove o primeiro objeto da lista e retorna o valor removido // Caso a posição seja inválida, o programa será finalizado! template < class T> T List< T> ::removefirst(void) { T frontitem; // Caso a Lista esteja Vazia, finaliza o programa if (isempty()) { cerr < < "Erro! Tentativa de remover um objeto de uma lista vazia..." < < endl; exit(1); //Recupera o primeiro objeto frontitem = listdata[0]; //Remove o primeiro objeto remove(frontitem); //retorna o valor removido return frontitem; Flávio de Oliveira Silva 29

30 DEFINIÇÃO DA LISTA 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 template < class T> bool List< T> ::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; Flávio de Oliveira Silva 30

31 DEFINIÇÃO DA LISTA List.cpp template < class T> void List< T> ::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+ + ; Flávio de Oliveira Silva 31

32 PROJETO DE CONCLUSÃO DE CURSO Valor: 25 pontos Apresentação: Entrevista de avaliação O projeto será entregue em etapas durante o curso. Dessa forma partes bem definidas serão entregues em diferentes datas. O trabalho será feito em grupo e o mesmo deverá possuir no máximo 2 pessoas. Cada participante deverá ficar responsável por implementar classes específicas, porém será necessário o entendimento da solução como um todo. Os projeto deverá ser executado utilizando o ambiente de programação DevC+ + O projeto deverá ser entregue através de (flavio@facom.ufu.br) Flávio de Oliveira Silva 32

33 PROJETO DE CONCLUSÃO DE CURSO CRITÉRIOS DE AVALIAÇÃO RESPEITO AO CRONOGRAMA - Neste item, será verificado se o grupo entregou todas as etapas nas datas solicitadas. FINALIZAÇÃO DA PROPOSTA Será feita uma proposta de trabalho contendo os requisitos necessários ao software. Ao final será feita uma verificação se todos estes requisitos foram implementados e além disso serão feitos testes para verificar o funcionamento do software como um todo. Flávio de Oliveira Silva 33

34 PROJETO DE CONCLUSÃO DE CURSO CRITÉRIOS DE AVALIAÇÃO (continuação) ENTREVISTA INDIVIDUAL - Cada participante deverá apresentar e explicar os conceitos utilizados na parte que ficou sob sua responsabilidade. Os participantes serão argüidos e será verificado o conhecimento adquirido; o entendimento da solução; o conhecimento da linguagem e seus recursos. Este item será analisado e pontuado individualmente. Flávio de Oliveira Silva 34

35 PROJETO DE CONCLUSÃO DE CURSO 3ULPHLUD(WDSD:Consiste na finalização da implementação da classe List que consiste de uma lista, implementada de forma estática e que utiliza o recurso de modelos(templates) de C+ + Data de Entrega: 25/ 06/ 2003 Os seguintes métodos deverão ser implementados Retorna o primeiro objeto - T getfirst() const; Retorna o último objeto - T getlast() const; Insere um objeto no inicio da lista - void insertfirst(const T&); Insere um objeto no final da lista - void insertlast(const T&); Insere um objeto em uma posição qualquer - void insertat(int, const T&); Insere um objeto após uma posição especificada - void insertafter(int, const T&) Insere um objeto antes de uma posição especificada - void insertbefore(int, const T&) Remove o ultimo objeto da lista - T removelast(void); Remove um objeto em uma posição especificada - T removeat(int); Flávio de Oliveira Silva 35

36 PROJETO DE CONCLUSÃO DE CURSO 3ULPHLUD(WDSD(continuação) A função PDLQ deverá ser modificada a fim de conter um exemplo de utilização de cada método, sendo necessário colocar comandos de entrada e/ou saída, conforme cada caso, para demonstrar a utilização e o resultado fornecido por cada método. Flávio de Oliveira Silva 36

37 PILHA Uma pilha é 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 "Último a entrar/ Primeiro a sair" - LIFO (Last-in/ First Out) D D D «D Q Qt A 7232 n 7232 A i A 3 A 2 A 1 A 1 A 2 A 3 A i A n Na pilha acima, o primeiro objeto a entrar foi o objeto D e o último o objeto D Q, porém somente é possível a remoção do objeto D Q. Desta forma para remover o objeto D é necessário antes remover todos os outros objetos e finalmente será possível a remoção de D O objeto D Q é conhecido como o 7232 da pilha Flávio de Oliveira Silva 37

38 PILHA Uma pilha pode ter 0 ou mais objetos Uma PILHA VAZIA não possui objetos. 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. Flávio de Oliveira Silva 38

39 PILHA 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 A 1 A 2 A 3 A i A n PILHA DINÂMICA Neste caso os objetos da pilha são alocados de forma dinâmica e um objeto qualquer deve conhecer a posição do seu próximo objeto. A... n A... i A 3 A 2 A 1 Flávio de Oliveira Silva 39

40 PILHA 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 (VWDFN'DWD). Este vetor irá conter um número máximo de objetos (L0D[6WDFN6L]H) O vetor irá utilizar um tipo genérico de dados (7) Um número inteiro que irá indicar o índice do TOPO da pilha (L7RS). Inicialmente o TOPO da pilha é igual a zero. O TOP número de objetos (L7RS) deverá ser sempre menor ou igual que o tamano do vetor (L0D[6WDFN6L]H) int itop; T stackdata imaxstacksize Flávio de Oliveira Silva 40

41 OPERAÇÕES CLÁSSICAS SOBRE UMA PILHA Somente o objeto que está no TOPO da pilha pode ser recuperado (peek) É 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 Flávio de Oliveira Silva 41

42 OPERAÇÕES SOBRE UMA PILHA INSERÇÃO DE NOVOS OBJETOS SXVK ±,QVHUH um objeto no WRSR da pilha, caso a mesma não esteja cheia YRLGSXVKFRQVW7 LWHP imaxstacksize SSXVK SSXVK L7RS 0 4 L7RS L7RS 1 4 Flávio de Oliveira Silva 42

43 OPERAÇÕES SOBRE UMA PILHA REMOÇÃO DE OBJETOS SRS± 5HPRYH o objeto que se encontra no WRSR da pilha, retornando o objeto removido 7SRSYRLG imaxstacksize SSRS L7RS 1 4 SSRS L7RS L7RS UHPRYH$OO ± 5HPRYH todos os objetos da pilha YRLG UHPRYH$OOYRLG Flávio de Oliveira Silva 43

44 OPERAÇÕES SOBRE UMA PILHA RECUPERAÇÃO DA INFORMAÇÃO SHHN± 5HFXSHUD o objeto que se encontra no WRSR da pilha, sem no entando retirá-lo da pilha - 7SHHNYRLG imaxstacksize SSHHN SSHHN L7RS L7RS 0 0 JHW6L]H ± 5HWRUQDRQ~PHURGHREMHWRV QDSLOKD LQWJHW6L]HYRLGFRQVW ILQG ± (QFRQWUDDSULPHLUDRFRUUrQFLDGHXP GHWHUPLQDGRREMHWR ERROILQG7 FRQVW L7RS Flávio de Oliveira Silva 44

45 OPERAÇÕES SOBRE UMA PILHA MÉTODOS DE APOIO LV(PSW\ ± 5HWRUQDXPERROHDQR LQGLFDQGRVHD SLOKD HVWiRXQmRYD]LD ERROLV(PSW\YRLGFRQVW LV)XOO ± 5HWRUQDXPERROHDQR LQGLFDQGRVHDSLOKD HVWiRXQmRFKHLD ERROLV)XOOYRLGFRQVW SULQW ±,PSULPHRFRQWH~GRGDSLOKD YRLGSULQWFRQVW Flávio de Oliveira Silva 45

46 DEFINIÇÃO DA PILHA Pilha.h # ifndef STACK_CLASS # define STACK_CLASS # include < iostream> # define imaxstacksize 32 template < class 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; Flávio de Oliveira Silva 46

47 DEFINIÇÃO DA PILHA Pilha.h public: // construtor Stack (void); 2SHUDoHVGHPRGLILFDomRGDSLOKD // 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); // Obtém objeto que se encontra no topo da pilha sem modifica-lo T peek (void) const; 0pWRGRVGHDSRLR bool isempty(void) const; bool isfull(void) const; void print()const; ; Flávio de Oliveira Silva 47

48 DEFINIÇÃO DA PILHA Pilha.h // Construtor do objeto pilha template < class T> Stack< T> ::Stack (void){ itop = -1 // Armazena um item na pilha no topo da pilha //Caso a pilha esteja cheia o programa será finalizado! // Esta não é a melhor opção, um forma melhor seria utilizar o // conceito de EXCEÇÕES template < class T> void Stack< T> ::push (const T& item){ // Verifica se a pilha está cheia, finaliz if (isfull()) { cerr < < "A pilha está cheia!" < < endl; exit(1); // incrementa o topo da pilha itop+ + ; //coloca o elemento no topo da pilha stackdata[itop] = item; Flávio de Oliveira Silva 48

49 DEFINIÇÃO DA PILHA Pilha.h //Remove o topo da pilha e o elemento que se encontra nesta posição //Caso a pilha esteja vazia o programa será finalizado! // Esta não é a melhor opção, um forma melhor seria utilizar o // conceito de EXCEÇÕES template < class T> T Stack< T> ::pop (void) { T temp; // Verifica se a pilha está vazia. Caso esteja o programa será finalizado if (isempty()) { cerr < < "A pilha está vazia!" < < endl; exit(1); // obtem o elemento que está no topo temp = stackdata[ itop]; // decrementa o topo da pilha itop--; return temp; Flávio de Oliveira Silva 49

50 DEFINIÇÃO DA PILHA Pilha.h // Obtem o objeto que se encontra no topo da pilha sem modifica-la template < class T> T Stack< T> ::peek (void) const { // Verifica se a pilha está vazia. Caso esteja o programa será finalizado if (isempty()) { cerr < < "A pilha está vazia!" < < endl; return stackdata[ itop]; //Verifica se a pilha está vazia template < class T> bool Stack< T> ::isempty(void) const { // Retorna true ou false, dependendo do resultado da comparação return (itop = = -1); Flávio de Oliveira Silva 50

51 DEFINIÇÃO DA PILHA Pilha.h //Verifica se a pilha está cheia template < class T> bool Stack< T> ::isfull(void) const { // Retorna true ou false, dependendo do resultado da comparação return (itop = = imaxstacksize-1); // Limpa a pilha template < class T> void Stack< T> ::removeall(void) { // Coloca o valor do topo como -1 itop = -1; Flávio de Oliveira Silva 51

52 DEFINIÇÃO DA PILHA Pilha.h template < class T> void Stack< T> ::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 Flávio de Oliveira Silva 52

53 FILA Uma pilha é 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) D D D «D Q Qt Na filha acima, o primeiro objeto a entrar foi o objeto D e o último o objeto D Q, porém somente é possível a remoção do objeto D. Da mesma forma, caso um novo objeto seja inserido na fila a sua posição será Q, visto que o último objeto que foi colocado na fila foi o objeto QD O objeto D Q é conhecido como o ),1$/ da fila O objeto D é conhecido como o,1ë&,2 da fila Flávio de Oliveira Silva 53

54 FILA 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 Caso o,1ë&,2 da fila seja o primeiro objeto da lista o ),1$/ da fila será o último objeto da lista. Flávio de Oliveira Silva 54

55 FILA 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 A 1 A 2 A 3 A i A n FILA DINÂMICA Neste caso os objetos da fila são alocados de forma dinâmica e um objeto qualquer deve conhecer a posição do seu próximo objeto. A... n A... i A 3 A 2 A 1 Flávio de Oliveira Silva 55

56 FILA ESTÁTICA REPRESENTAÇÃO INICIAL Informações necessárias para representar uma fila estática a partir de um vetor: Um vetor que irá conter os objetos da pilha (TXHXH'DWD). Este vetor irá conter um número máximo de objetos (L0D[4XHXH6L]H) O vetor irá utilizar um tipo genérico de dados (7) A posição 0 irá indicar o,1ë&,2 da fila. Um número inteiro indicando a próxima posição disponível no vetor após ),1$/ da fila (L%DFN). Inicialmente o TOPO da pilha é igual a zero. O TOP número de objetos (L7RS) deverá ser sempre menor ou igual que o tamanho do vetor (L0D[4XHXH6L]H) T stackdata int iback; 0 imaxqueuesize Flávio de Oliveira Silva 56

57 REPRESENTAÇÃO INICIAL PROBLEMAS! 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: T stackdata imaxqueuesize = 1000 Ao remover o objeto que está no TOPO da fila será necessário mover todos os objetos int iback; int iback; imaxqueuesize = int iback; Desta forma a implementação da fila é ineficiente, pois exige um maior esforço computacional Flávio de Oliveira Silva 57

58 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 (L)URQW) que irá indicar o,1ë&,2 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 int L)URQW; T stackdata int L)URQW; int iback; imaxqueuesize = 1000 int iback???? imaxqueuesize = 1000 Porém neste caso, como fazer para indicar que uma nova posição está disponível na fila? Flávio de Oliveira Silva 58

59 FILA REPRESENTAÇÃO FINAL 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: L)URQW L)URQW L0D[4XHXH6L]H L%DFN L%DFN L0D[4XHXH6L]H 2SHUDGRUPyGXORUHWRUQDRUHVWRGD GLYLVmRLQWHLUD([ Flávio de Oliveira Silva 59

60 FILA REPRESENTAÇÃO FINAL Por exemplo: sendo imaxqueuesize = 6; ifront= 1; iback= 5; temos a seguinte situação int ifront T stackdata imaxqueuesize = 6 Ao inserir um novo elemento (8) teremos: int ifront = 1 T stackdata int iback = 0 int iback = 5 imaxqueuesize = 6 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. Flávio de Oliveira Silva 60

61 DEFINIÇÃO DA FILA Pilha.h # ifndef QUEUE_CLASS # define QUEUE_CLASS # include < iostream> // Tamanho Máximo de Elementos na fila const int imaxqueuesize = 32; template < class T> class Queue { private: // queue array and its parameters int ifront, iback, isize; T queuedata[ imaxqueuesize]; Flávio de Oliveira Silva 61

62 DEFINIÇÃO DA FILA Pilha.h public: // Construtor Queue (void); // MODIFICAÇÃO (INSERÇÃO E REMOÇÃO) void push(const T& item); T pop(void); void removeall(void); // RECUPERAÇÃO DA INFORMAÇÃO T getfront(void) const; T getback(void) const; // MÉTODOS DE APOIO int getsize(void) const; int isempty(void) const; int isfull(void) const; ; Flávio de Oliveira Silva 62

63 DEFINIÇÃO DA FILA Pilha.h // inicializa as variáveis membro da fila ifront, iback, isize template < class T> Queue< T> ::Queue (void) { ifront = 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]; Flávio de Oliveira Silva 63

64 DEFINIÇÃO DA FILA Pilha.h // Recupera o número de elementos na fila template < class T> int Queue< T> ::getsize(void) const { return isize; // Insere um elemento na fila template < class T> void Queue<T> ::push (const T& item) { // Finaliza se a fila estiver cheia if (isfull()){ cerr < < "Fila cheia!" < < endl; exit(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; Flávio de Oliveira Silva 64

65 DEFINIÇÃO DA FILA Pilha.h // Remove um elemento da fila e retorna seu valor template < class T> T Queue< T> ::pop(void) { T temp; // Finaliza se a fila estiver vazia if (isempty()){ cerr < < "Fila vazia!" < < endl; exit(1); // Recupera o objeto que esta no inicio da fila e coloca em temp temp = 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 o inicio da fila return temp; Flávio de Oliveira Silva 65

66 DEFINIÇÃO DA FILA Pilha.h // 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; // 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; # endif // QUEUE_CLASS Flávio de Oliveira Silva 66

67 LISTA DINÂMICA 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. A 1 A 2 A... 3 A... i A n Neste caso o tamanho da lista não tem um limite máximo e pode ser alterado a medida que novos elementos são alocados. Flávio de Oliveira Silva 67

68 LISTA DINÂMICA APLICAÇÕES LISTA DINÂMICA Utilizada para representar situações onde o número de objetos irá YDULDU a medida que a lista é utilizada, sendo que não é possível prever qual será o número máximo de objetos. Exemplos Projeto de circuitos de um painel (No projeto cada painel poderá ter um número qualquer de circuitos); Lista de Cargas associadas a um Circuito Elétrico Lista de equipamentos adquiridos; Lista de telefones instalados em uma localidade; Lista de reservas feitas para um determinado vôo; Flávio de Oliveira Silva 68

69 LISTA DINÂMICA - REPRESENTAÇÃO Para criar uma lista dinâmica precisamos estabelecer algumas idéias importantes: O objeto contido na lista (GDWD). Este objeto irá pertencer a uma classe genérica (7). Cada objeto da lista será chamado de nó (1RGH) A idéia básica é que o primeiro elemento, conheça o endereço do segundo; o segundo nó, conheça o endereço do terceiro nó e assim por diante Logo um nó (1RGH) deve conhecer o endereço do seu próximo (QH[W) nó. Quando um nó não possui um próximo nó, ou seja, este nó for o último nó, seu próximo (QH[W) terá um valor nulo (18//) T data next Flávio de Oliveira Silva 69

70 LISTA DINÂMICA - REPRESENTAÇÃO O Atributo GDWD, contém o dado O Atributo QH[W, contém o endereço do próximo nó. O diagrama abaixo representa os dados na memória HQGHUHoR GDWD QH[W x x140 x14050 x210 x21010 x390 x x0 (NULL) Uma outra forma para representar a lista é a seguinte: RGH 1RGH (NULL) Flávio de Oliveira Silva 70

71 LISTA DINÂMICA Definição Node.h # ifndef NODE_CLASS # define NODE_CLASS template < class T> class Node { private: // next é o endereço do nó seguinte Node< T> * next; // Neste caso o nó irá conter um objeto da classe T T data; public: // Construtor Node(const T&, Node<T> * ); Flávio de Oliveira Silva 71

72 LISTA DINÂMICA Definição Node.h ; // RECUPERAÇÃO DA INFORMAÇÃO T getdata() const; Node< T> * getnext(void) const; Node< T> * getlast(void); bool find(t&); // MODIFICAÇÃO (INSERÇÃO E REMOÇÃO) //Insere um nó após o atual void insertafter(node< T>* ); void insertlast(node< T>* ); //Remove um nó após o atual Node< T> * removeafter(void); Node< T> * removefirst(void); // MÉTODOS DE APOIO void print(); //Libera a memória void free(); Flávio de Oliveira Silva 72

73 LISTA DINÂMICA Definição Node.h // Construtor. Inicializa os dados e o próximo nó, cujo valor padrão // é NULL ou seja nulo, não ponta para nenhum endereço template < class T> Node<T> ::Node(const T& item, Node<T>* pprox = NULL) { data = item; next = pprox; // Retorna o valor do próximo nó template < class T> Node< T>* Node< T> ::getlast(void) { Node<T> * ptemp = this; Node<T> * plast = ptemp; while (ptemp!= NULL) { plast = ptemp; ptemp = ptemp-> next; return plast; Flávio de Oliveira Silva 73

74 LISTA DINÂMICA Definição Node.h // Retorna um ponteiro para o último nó existente template < class T> Node< T>* Node< T> ::getnext(void) const { return next; // Retorna o valor do objeto contido no nó template < class T> T Node< T> ::getdata(void) const { return data; // Insere um nó após o nó atual template < class T> void Node< T> ::insertafter(node< T> * p) { // p aponta para o successor do nó corrente // e o nó corrente aponta para p. p-> next = next; next = p; Flávio de Oliveira Silva 74

75 LISTA DINÂMICA Definição Node.h // Remove o nó seguinte ao nó atual e retorna seu endereço template < class T> Node< T>* Node< T> ::removeafter(void) { // Salva o endereço do nó que será apagado Node<T> * ptemp = next; // Se não existe o próximo nó então retorna if (next == NULL) return NULL; // O nó corrente irá apontar para o sucessor do próximo nó next = ptemp-> next; // retorna o ponteiro para o nó que será removido return ptemp; Flávio de Oliveira Silva 75

76 LISTA DINÂMICA Definição Node.h // Encontra um item template < class T> bool Node< T> ::find(t& item) { Node<T>* pcurrent = this; //Varre todos os nós while(pcurrent!= NULL) { //Verifica se o nó atual contém o dado a ser procurado if (pcurrent-> data = = item){ return true; pcurrent = pcurrent-> next; // Caso não tenha encontrado retorna false; return false; Flávio de Oliveira Silva 76

77 LISTA DINÂMICA Definição Node.h // Imprime o conteudo dos nós template < class T> void Node< T> ::print() { int ii(0); cout < < "Imprimindo o conteudo da lista..." << endl; Node<T> * pcurrent = this; //Varre todos os nós while(pcurrent!= NULL) { cout < < "Elemento: " < < ii < < " - " < < pcurrent-> data < < endl; pcurrent = pcurrent-> next; ii+ + ; Flávio de Oliveira Silva 77

78 LISTA DINÂMICA Definição Node.h // Insere um nó na última posição template < class T> void Node< T> ::insertlast(node< T>* pnew){ Node<T> * pcurrent = this; Node<T> * plast; plast = pcurrent-> getlast(); plast-> insertafter(pnew); Flávio de Oliveira Silva 78

79 LISTA DINÂMICA Definição Node.h //Libera a memória template < class T> void Node< T> ::free() { cout < < "Liberando a memoria..." < < endl; Node< T> * pcurrent = this; Node< T> * pnext; pnext = pcurrent; // Limpa todos os nós while(pnext!= NULL) { pnext = pcurrent-> next; delete(pcurrent); pcurrent = pnext; # endif // NODE_CLASS Flávio de Oliveira Silva 79

80 LISTA DINÂMICA Uso da Definição # include < iostream> # include < stdlib.h> # include "Node.h" using namespace std; int main(int argc, char * argv[]) { // Cria o nó que irá representar a lista Node<string> * lis = NULL ; bool bcontinue(true); int iopcao; string snome; while (bcontinue) { //system("cls"); cout < < "\tdigite a opcao desejada: " < < endl; cout < < "\t[1] - Inserir elemento na lista" < < endl; cout < < "\t[4] - Imprimir a lista" < < endl; cout < < "\t[5] - Procurar um elemento na lista" << endl; cout < < "\t[9] - Finalizar" < < endl; Flávio de Oliveira Silva 80

81 LISTA DINÂMICA Uso da Definição cin > > iopcao; switch (iopcao) { case 1: cout < < "Digite o nome a ser armazenado : " < < endl; cin > > snome; //Caso seja o primeiro elemento a lista deverá ser alocada na //memória if (lis = = NULL){ lis = new Node<string> (snome); else { // Caso não seja o primero adiciona na ultima posicao da lista // Desta forma é possível preservar a variável lis, que contém //o inicio da lista lis-> insertlast(new Node< string> (snome)); break; Flávio de Oliveira Silva 81

82 LISTA DINÂMICA Uso da Definição case 4: lis-> print(); break; case 5: cout < < "Digite o nome a ser procurado : " << endl; cin > > snome; if (lis->find(snome)) cout < < "Nome encontrado!" << endl; else cout < < "Nome nao encontrado!" < < endl; break; Flávio de Oliveira Silva 82

83 LISTA DINÂMICA Uso da Definição case 9: bcontinue = false; break; default: cout < < "Opcao inválida! Digite Novamente..." < < endl; break; //Libera a memoria lis-> free(); system("pause"); return 0; Flávio de Oliveira Silva 83

84 LISTA DINÂMICA Uso da Definição # include < iostream> # include < stdlib.h> # include "Node.h" using namespace std; int main(int argc, char * argv[]) { // Cria o nó que irá representar a lista Node<string> * lis = NULL ; bool bcontinue(true); int iopcao; string snome; while (bcontinue) { //system("cls"); cout < < "\tdigite a opcao desejada: " < < endl; cout < < "\t[1] - Inserir elemento na lista" < < endl; cout < < "\t[4] - Imprimir a lista" < < endl; cout < < "\t[5] - Procurar um elemento na lista" << endl; cout < < "\t[9] - Finalizar" < < endl; cin > > iopcao; Flávio de Oliveira Silva 84

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

Coleção de Dados. Coleções de Dados Classificação 4/1/2011 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

Leia mais

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ANHANGUERA ESTRUTURA DE DADOS AULA 06 LISTAS CIRCULARES E DUPLAMENTE ENCADEADAS. Prof. Thomás da Costa

ANHANGUERA ESTRUTURA DE DADOS AULA 06 LISTAS CIRCULARES E DUPLAMENTE ENCADEADAS. Prof. Thomás da Costa ANHANGUERA 2015.2 ESTRUTURA DE DADOS AULA 06 Prof. Thomás da Costa thomascosta@aedu.com Vamos ver o PEA : PEA Estrutura de Dados Antes de iniciar a aula, vamos mostrar o andamento do PEA. Vou mostrar as

Leia 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

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

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

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

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

PCS Laboratório de Programação Orientada a Objetos 1a. Prova. 02 de Setembro de 2015

PCS Laboratório de Programação Orientada a Objetos 1a. Prova. 02 de Setembro de 2015 PCS - 3111 Laboratório de Programação Orientada a Objetos 1a. Prova 02 de Setembro de 2015 Questão 1 (2,6) Deseja-se implementar um programa que recebe um mês e um dia atual de um ano e o mês e o dia de

Leia mais

//conteúdo do arquivo pacote.h

//conteúdo do arquivo pacote.h //conteúdo do arquivo pacote.h #ifndef PACOTE_H #define PACOTE_H #include #include class Pacote friend istream &operator>> (istream &, Pacote &); friend ostream &operator

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

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

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

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

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

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 II. Prof. Sérgio Portari

Estrutura de Dados II. Prof. Sérgio Portari Estrutura de Dados II Prof. Sérgio Portari - 2016 Plano de Ensino EMENTA: Filas, Árvores e suas generalizações: árvores binárias, árvores de busca, árvores balanceadas, árvores B e B+. Aplicações de árvores

Leia mais

Listas Ligadas (Encadeadas) Listas Simplesmente Encadeadas

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

Leia mais

INTRODUÇÃO ÀS ESTRUTURAS DE DADOS. Prof. Dr. Daniel Caetano

INTRODUÇÃO ÀS ESTRUTURAS DE DADOS. Prof. Dr. Daniel Caetano ESTRUTURA DE DADOS INTRODUÇÃO ÀS ESTRUTURAS DE DADOS Prof. Dr. Daniel Caetano 2014-2 Objetivos Conhecer o professor e o curso Compreender o que são estruturas de dados e sua importância Relembrar conceitos

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

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 11: Exercício Integrador (parte 2)

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 11: Exercício Integrador (parte 2) PCS3111 Laboratório de Programação Orientada a Objetos para Engenharia Elétrica Aula 11: Exercício Integrador (parte 2) Escola Politécnica da Universidade de São Paulo Agenda 1. Container List 2. Iterators

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

Listas. Aula 01. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

Listas. Aula 01. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria Engenharia de CONTROLE e AUTOMAÇÃO Listas Aula 01 DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria beltrame@mail.ufsm.br 1/ Sumário

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

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

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

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

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

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

Árvores binárias de busca

Árvores binárias de busca Árvores binárias de busca / Árvores de busca / 1 Árvores binárias de busca, ou binary search trees, BST, são árvores binárias onde, para cada sub-árvore, todos os elementos da sub-árvore da esquerda sã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

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

Aula 10 Comandos de Repetição

Aula 10 Comandos de Repetição Aula 10 Comandos de Repetição Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira ronaldo.co@ufu.br Anilton Joaquim da Silva anilton@ufu.br 1 Introdução Em certas situações é necessária

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

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

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

Aula 05: Condicionais (Parte 2)

Aula 05: Condicionais (Parte 2) Aula 05: Condicionais (Parte 2) Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aula Anterior Breve Revisão Comandos de Decisão

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

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

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

LP II Estrutura de Dados

LP II Estrutura de Dados LP II Estrutura de Dados Filas Estáticas Sequenciais Prof. José Honorato Ferreira Nunes honoratonunes@softwarelivre.org http://softwarelivre.org/zenorato/honoratonunes Filas - conceitos É uma lista linear

Leia mais

Capítulo 8: Abstrações de dados

Capítulo 8: Abstrações de dados Capítulo 8: Abstrações de dados Ciência da computação: Uma visão abrangente 11a Edition by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Estruturas de dados básicas Matriz homogênea Matriz

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

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

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

Á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 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 10 Alocação Dinâmica de Memória Listas Encadeadas. prof Leticia Winkler

Aula 10 Alocação Dinâmica de Memória Listas Encadeadas. prof Leticia Winkler Aula 10 Alocação Dinâmica de Memória Listas Encadeadas prof Leticia Winkler 1 Prof. Leticia Winkler 2 Alocação de Memória Reservar na memória (principal), o espaço para guardar a informação através da

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

Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Lista de Exercícios

Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Lista de Exercícios Estrutura de Dados I Bacharelado em Sistemas de Informação FACOM UFU Lista de Exercícios Prof. Flávio de Oliveira Silva, M.Sc. 1. Crie uma função chamada somavetor. Esta função deve receber dois vetores

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

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

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

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

Prova 2 PMR2300 1o. semestre 2015 Prof. Thiago Martins Prova PMR00 o. semestre 0 Prof. Thiago Martins Instruções: Escreva o nome e o número USP na folha de papel almaço.. ( pontos) Um heap binário é uma árvore binária completa (todos os níveis exceto o último

Leia mais

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

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira. Algoritmos e Estrutura de Dados II Árvore Prof a Karina Oliveira kkco@dei.unicap.br Introdução Estruturas de dados lineares (pilha, fila) são estruturas que guardam coleções de elementos que são acessados

Leia 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

Linguagem de Programação C++

Linguagem de Programação C++ 337 Linguagem de Programação C++ Sobrecarga de operadores Creio que todos vocês, programando na linguagem C, já tentaram, ao menos uma vez, atribuir com o operador = um vetor a outro, ou comparar duas

Leia mais

Prof. Jesus José de Oliveira Neto

Prof. Jesus José de Oliveira Neto Prof. Jesus José de Oliveira Neto É uma das estruturas de dados mais simples A idéia fundamental da pilha é que todo o acesso a seus elementos é feito através do seu topo. Assim, quando um elemento novo

Leia mais

Estrutura de Dados. Estrutura de Dados Recursividade. Exemplo: 5! = 5 x 4! 4! = 4 x 3! 3! = 3 X 2! 2! = 2 x 1! 1! = 1 x 0!

Estrutura de Dados. Estrutura de Dados Recursividade. Exemplo: 5! = 5 x 4! 4! = 4 x 3! 3! = 3 X 2! 2! = 2 x 1! 1! = 1 x 0! Rafael D. Ribeiro, M.Sc. rafaeldiasribeiro@gmail.com http://www.rafaeldiasribeiro.com.br Exemplo: 5! = 5 x 4! 4! = 4 x 3! 3! = 3 X 2! 2! = 2 x 1! 1! = 1 x 0! Fatorial de 0 = 1 Recursividade 1 Recursividade

Leia mais

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica. Computação L2 Linguagem C++ ovsj@cin.ufpe.br Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);

Leia mais

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

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

Leia mais

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

Professora Jeane Melo

Professora Jeane Melo Professora Jeane Melo Roteiro Lista Encadeada Alocação: Estática x Dinâmica O que são Ponteiros? Ponteiros Variáveis que Armazenam Endereços de Memória Mas, toda variável não é armazenada na memória? Ponteiros

Leia mais

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

Estruturas de Dados. Módulo 11 Pilhas. 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Estruturas de Dados Módulo 11 Pilhas 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

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

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

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação 1I Prof. Osório Lista Linear Seqüencial (Alocação Estática) Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação

Leia 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

Templates. BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP

Templates. BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP Templates BCC 221 - Programação Orientada a Objectos(POO) Guillermo Cámara-Chávez Departamento de Computação - UFOP Introdução Os templates ou gabaritos fornecem a base para existência da programação genérica

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

Fontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros:

Fontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros: Fontes Bibliográficas Estruturas de Dados Aula 15: Árvores Livros: Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 13; Projeto de Algoritmos (Nivio Ziviani): Capítulo 5; Estruturas

Leia mais

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

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

Leia mais

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

Laboratório de programação II

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

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

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

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Linguagem C++: arrays - aula I Bruno Emerson Gurgel Gomes 1 1 Instituto Federal de Educação, Ciência e Tecnologia do RN (IFRN) 2012 Bruno Gomes (IFRN) Fundamentos de Programação

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 (baseado nas notas de aula do prof. Túlio A. M. Toffolo) Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade

Leia mais

INF1007 Programação 2 9 Pilhas. (c) Dept. Informática - PUC-Rio 1

INF1007 Programação 2 9 Pilhas. (c) Dept. Informática - PUC-Rio 1 INF1007 Programação 2 9 Pilhas (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Introdução Interface do tipo pilha Exemplo de uso: verificação de expressões Implementação de pilha com lista encadeada

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

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e recodificações em C dos originais:

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e recodificações em C dos originais: Estruturas de Dados Listas Dinâmicas Simplesmente Encadeadas Prof. Ricardo J. G. B. Campello Créditos Parte dos slides a seguir são adaptações, extensões e recodificações em C dos originais: disponíveis

Leia mais