Programação II. Pilhas (stacks) Bruno Feijó Dept. de Informática, PUC-Rio

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

Download "Programação II. Pilhas (stacks) Bruno Feijó Dept. de Informática, PUC-Rio"

Transcrição

1 Progrmção II Pilhs (stcks) Bruno Feijó Dept. de Informátic, PUC-Rio

2 Pilh Novo elemento é inserido no e cesso é pens o... como num pilh de prtos O único elemento que pode ser cessdo e removido é o do N Pilh (Stck), os elementos são retirdos n ordem invers à ordem em que form colocdos, i.e.: o 1o. que si é o último que entrou (LIFO lst in, first out) N estrutur Fil (Queue) é o inverso: FIFO first in, first out i.e.: 1o. chegr, primeiro sir Operções ásics Empilhr (push) um novo elemento, inserindo-o no Desempilhr (pop) um elemento, removendo-o do

3 Pilh como vetor (rry) ou list encded Vetor push () push () push (c) pop () retorn c push (d) pop () retorn d N n=1 n=2 n=3 c n=2 n=3 d n=2 List NULL push () push () push (c) c pop () retorn c push (d) d pop () retorn d No cso cim, pilh é representd pelo ponteiro (ou top). Porém, é mis gerl e fácil colocr o ponteiro pr o d pilh dentro de um estrutur chmd pilh (que representrá pilh). p represent pilh. p push(c) c p Representr pilh dest form (com um nov estrutur contendo pens um ponteiro, o invés de um simples vriável pontndo pr list) é necessári pr definer Pilh como um TAD.

4 Um exercício chve! pilh de flots Agor que você se o que é um Pilh e o que são s operções push e pop, tente (sem ver o próximo slide) definir s estruturs necessáris pr um TAD Pilh de flots implementdo como list Você precis primeiro definir elemento de list e, depois, definir Pilh como um estrutur de pens um componente (que é o ponteiro pr um elemento de list) Depois você define s funções pilh_cri e pilh_push.

5 Interfce: pilh.c: Agor vmos crir um TAD Pilh de flot como list! typedef struct pilh Pilh; Pilh * pilh_cri(void); // Cons void pilh_lier(pilh * p); // Des int pilh_vzi(pilh * p); // Get flot pilh_pop(pilh * p); // Get & Des void pilh_push(pilh * p, flot ); // Set struct elemento flot info; struct elemento * prox; ; typedef struct elemento Elemento; struct pilh Elemento * ; ; typedef struct pilh Pilh; fltm: lier() e pop() Pilh * pilh_cri(void) Pilh * p = (Pilh *) mlloc(sizeof(pilh)); p-> = NULL; return p; void pilh_push(pilh * p, flot ) Elemento * t=(elemento *) mlloc(sizeof(elemento)); if (t==null) exit(1); t->info= ; t->prox= p->; p->= t; Poderímos tmém incluir peek() que é um pop() sem remoção. Um lterntiv, menos interessnte, seri definir top() que pens retorn o endereço do d pilh e pop() que pens remove o (i.e. um destructor). lier() pode lierr pens qundo pilh está vzi ou lier tudo. int pilh_vzi(pilh * p) return (p-> == NULL);

6 pilh.c como list e vetor struct elemento flot info; struct elemento * prox; ; typedef struct elemento Elemento; struct pilh Elemento * ; ; typedef struct pilh Pilh; Pilh como vetor: # define N 50 struct pilh int n; flot v[n]; ; typedef struct pilh Pilh; Pilh como list: Pilh * pilh_cri(void) Pilh * p = (Pilh *) mlloc(sizeof(pilh)); p-> = NULL; return p; void pilh_push(pilh * p, flot ) Elemento * t=(elemento *) mlloc(sizeof(elemento)); if (t==null) exit(1); t->info= ; t->prox= p->; p->= t; N é o número máximo de elementos n: número de elementos no vetor v[n]: primeir posição livre do vetor v[n-1]: d pilh void pilh_push(pilh * p, flot ) if (p->n==n) exit(1); p->v[p->n]=; p->n++; Pilh * pilh_cri(void) Pilh * p = (Pilh *) mlloc(sizeof(pilh)); p->n = 0; return p;

7 Interfce complete do TAD pilh de flot : typedef struct pilh Pilh; Pilh * pilh_cri(void); void pilh_lier(pilh * p); int pilh_vzi(pilh * p); void pilh_push(pilh * p, flot ); flot pilh_pop(pilh * p); função pilh_cri loc dinmicmente estrutur d pilh iniciliz seus cmpos e retorn seu ponteiro função pilh_lier destrói pilh, lierndo tod memóri usd pel estrutur função pilh_vzi inform se pilh está ou não vzi funções pilh_push e pilh_pop inserem e retirm, respectivmente, um vlor rel n pilh pop() em pilh vzi lnç exceção (stck exception)

8 Módulo completo pilh.c do TAD pilh de flot int pilh_vzi(pilh * p) return (p-> == NULL); Pilh * pilh_cri(void) Pilh * p = (Pilh *)mlloc(sizeof(pilh)); p-> = NULL; return p; void pilh_push(pilh * p, flot ) Elemento * novo = (Elemento *)mlloc(sizeof(elemento)); if (novo==null) exit(1); novo->info = ; novo->prox = p->; p-> = novo; void pilh_lier(pilh * p) Elemento *t, * q = p->; while (q!= NULL) t = q->prox; free(q); q = t; free(p); ou: ssert(!pilh_vzi(p)); requer ssert.h flot pilh_pop(pilh * p) Elemento * t; flot ; if (pilh_vzi(p)) printf("pilh vzi.\n"); exit(1); t = p->; = t->info; p-> = t->prox; free(t); return ; ssert(expressão); se expressão não é verdde, execução termin e mensgem de erro identific rquivo, linh, função e condição que foi viold. Se fosse pilh como vetor: Pilh * pilh_cri (void) Pilh * p = (Pilh *)mlloc(sizeof(pilh)); p->n = 0; //iniciliz com zero elementos return p;

9 CALCULADORA PÓS-FIXADA

10 Notções pr Expressões Aritmétics Infix (infix): operdor entre operndos (5 8) + 3 Pós-fix (posfix): operdor pós operndos (tipo clculdor HP) ou Pré-fix (prefix): operdor ntes dos operndos Tods equivlentes à seguinte árvore:

11 Outro Exemplo de Expressões Aritmétics Infix (infix): (1 2) (4 + 5) Pós-fix (posfix): Pré-fix (prefix): Tods equivlentes à seguinte árvore:

12 Clculdor Pós-fixd Cd operndo é empilhdo num pilh de vlores qundo se encontr um operdor desempilh-se o número proprido de operndos dois pr operdores inários e um pr operdores unários reliz-se operção devid empilh-se o resultdo

13 Exemplo Clculdor Pós-fixd empilhe os vlores 1 e * 2 1 qundo prece o operdor * desempilhe 1 e 2 empilhe -1, o resultdo d operção (1-2) empilhe os vlores 4 e * qundo prece o operdor * desempilhe 4 e 5 empilhe 9, o resultdo d operção (4+5) qundo prece o operdor * * desempilhe -1 e 9 empilhe -9, o resultdo d operção (-1*9) -9

14 Progrm Clculdor hp: clc.h #include "pilh.h" clc.h struct clc chr f[21]; // formto pr impresso (e.g. "%.2f\n ) Pilh * p; // pilh de operndos ; typedef struct clc Clc; Clc * clc_cri(chr * f); void clc_operndo(clc * c, flot vlor); void clc_operdor(clc * c, chr op); void clc_lier(clc * c);

15 hp.c #include <stdio.h> #include "clc.h" int min(void) chr c; flot vlor; Clc * clc; clc = clc_cri("%.2f\n"); do scnf(" %c",&c); // le^ proximo crctere no-rnco if (c=='+' c=='-' c=='*' c=='/') clc_operdor(clc,c); else ungetc(c,stdin); if (scnf("%f",&vlor) == 1) clc_operndo(clc,vlor); while (c!='q'); clc_lier(clc); return 0;

16 clc.c #include <stdio.h> #include <stdli.h> #include <string.h> #include "clc.h" Clc * clc_cri(chr * formto) Clc * c= (Clc *)mlloc(sizeof(clc)); strcpy(c->f,formto); c->p = pilh_cri(); return c; void clc_operndo(clc * c, flot vlor) pilh_push(c->p,vlor); // empilh oper // printf(c->f,vlor); // imprime void clc_lier(clc * c) pilh_lier(c->p); free(c); void clc_operdor(clc * c, chr op) flot v1, v2, vlor; if (pilh_vzi(c->p)) v2 = 0.0; else v2 = pilh_pop(c->p); if (pilh_vzi(c->p)) v1 = 00; else v1 = pilh_pop(c->p); switch (op) cse '+': vlor = v1 + v2; rek; cse '-': vlor = v1 - v2; rek; cse '*': vlor = v1 * v2; rek; cse '/': vlor = v1 / v2; rek; // defult: // printf( unknown %c\n", op); // rek; pilh_push(c->p,vlor); // empilh printf(c->f,vlor); // imprime

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

push (c) pop () retorna-se c topo b a topo Figura 10.1: Funcionamento da pilha.

push (c) pop () retorna-se c topo b a topo Figura 10.1: Funcionamento da pilha. 11. Pilhs W. Celes e J. L. Rngel Um ds estruturs de ddos mis simples é pilh. Possivelmente por ess rzão, é estrutur de ddos mis utilizd em progrmção, sendo inclusive implementd diretmente pelo hrdwre d

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

Alocação sequencial - Pilhas

Alocação sequencial - Pilhas Alocção seqüencil - pilhs Alocção sequencil - Pilhs Pilhs A estrutur de ddos Pilh é bstnte intuitiv. A nlogi é um pilh de prtos. Se quisermos usr um pilh de prtos com máxim segurnç, devemos inserir um

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 13 Pilhas Edirlei Soares de Lima Pilha Uma pilha é uma estrutura de dados dinâmica na qual novos elementos são sempre inseridos no topo da pilha e acessados

Leia mais

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

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

Leia mais

Programação II. Ordenação (sort) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Ordenação (sort) Bruno Feijó Dept. de Informática, PUC-Rio Progrmção II Ordenção (sort) Bruno Feijó Dept. de Informátic, PUC-Rio Bule Sort Bule Sort Apens de interesse didático e de referênci A idéi é ir comprndo dois vizinhos e trocndo o menor pelo mior té que

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

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

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

Pilhas e Filas. Nádia Félix e Hebert Coelho

Pilhas e Filas. Nádia Félix e Hebert Coelho Pilhas e Filas Nádia Félix e Hebert Coelho Vários slides foram adaptados de Nina Edelwais e Renata Galante Estrutura de Dados Série de Livros Didáticos - Informática - UFRGS Pilhas e filas Listas lineares

Leia mais

Estruturas de Dados Aula 11: TAD Pilha

Estruturas de Dados Aula 11: TAD Pilha Estruturas de Dados Aula 11: TAD Pilha Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 3; Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 10; Estruturas

Leia mais

Estruturas de Dados. 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

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

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

Métodos Computacionais. Fila

Métodos Computacionais. Fila Métodos Computacionais Fila Definição de Fila Fila é uma estrutura de dados dinâmica onde: Inserção de elementos se dá no final e a remoção no início O primeiro elemento que entra é o primeiro que sai

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

Métodos Computacionais. Listas Encadeadas

Métodos Computacionais. Listas Encadeadas Métodos Computacionais Listas Encadeadas Vetores Declaração de vetor implica na especificação de seu tamanho Não se pode aumentar ou diminuir tamanho Outra alternativa no uso de vetores é alocar dinamicamente

Leia mais

Uso da memória. Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores. Alocação estática da memória. Alocação estática da memória (2)

Uso da memória. Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores. Alocação estática da memória. Alocação estática da memória (2) Estruturs de Ddos Auls 3 e 4: Uso d memóri e Vetores 08/03/2009 e 10/03/2009 Uso d memóri Existem 3 mneirs de reservr o espço d memóri: Vriáveis glois (estátics) Espço existe enqunto progrm estiver executndo

Leia mais

Projeto de Compiladores Professor Carlos de Salles

Projeto de Compiladores Professor Carlos de Salles Projeto de Compildores 2006.1 Professor Crlos de Slles Trlho 1 Autômto pr Plvrs Reservds Ojetivo do trlho: implementr um progrm que recee como entrd um list de plvrs reservds e define como síd um função

Leia mais

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista Pilha 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 Aritmética de ponteiros em C (continuação) O que acontece na memória? Ponteiro para ponteiro etc. Métodos de pesquisa

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

Programação II. Filas (Queues) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Filas (Queues) Bruno Feijó Dept. de Informática, PUC-Rio Programação II Filas (Queues) Bruno Feijó Dept. de Informática, PUC-Rio Fila Na Pilha, o novo elemento é inserido no topo e o acesso é apenas ao topo... como numa pilha de pratos topo O único elemento

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

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

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

Módulo 10 Listas Encadeadas

Módulo 10 Listas Encadeadas Estruturas de Dados Módulo 10 Listas Encadeadas 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

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 Sequencial Estática e Encadeada Dinâmica 17 e 19/8/2010 Exercício: Implementação da pilha sequencial e estática Declaração em C escondendo a ED do

Leia mais

Instituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

Instituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense - Instituto de C Linguagem C: Listas Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Listas Encadeadas Definição Funções básicas Tópicos Principais

Leia mais

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista

Pilha. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Gustavo Batista Pilha 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

Estruturas de Dados Aula 11: TAD Pilha 09/05/2011

Estruturas de Dados Aula 11: TAD Pilha 09/05/2011 Estruturas de Dados Aula 11: TAD Pilha 09/05/2011 Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 3; Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo

Leia mais

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010 Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 23/06/2010 Aluno: Instruções: 1) Escreva seu nome completo, matrícula e turma em todas as folhas desta prova; 2) A prova deve ser completamente

Leia mais

Funções recursivas. O exemplo mais comum: int fat(int n){ if(n == 0) return 1; return n*fat(n-1); }

Funções recursivas. O exemplo mais comum: int fat(int n){ if(n == 0) return 1; return n*fat(n-1); } Funções Recursivas Funções recursivas O exemplo mais comum: int fat(int n){ if(n == 0) return 1; return n*fat(n-1); Versão sem recursão: int fat(int n){ int i = 0; int f = 1; for(i=1; i

Leia mais

Programação II. Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio Programação II Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio Árvores Dados organizados de maneira hierárquica Exemplos: arquivos em diretórios, subdivisão de espaço 2D em um

Leia mais

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

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

Leia mais

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES-11 Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra CES-11 Pilhas Filas Deques Pilhas,,f filas e deques Vimos que as listas lineares admitem inserção e eliminação

Leia mais

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 8 Listas Encadeadas (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Motivação Listas encadeadas Implementações recursivas Listas de tipos estruturados (c) Dept. Informática

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

Aula 3 Alocação Dinâmica

Aula 3 Alocação Dinâmica Aula 3 Alocação Dinâmica Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas de Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno

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

Conceitos. Pilhas e Filas. Conceitos e Implementação em linguagem C. Maria Adriana Vidigal de Lima. Março

Conceitos. Pilhas e Filas. Conceitos e Implementação em linguagem C. Maria Adriana Vidigal de Lima. Março Conceitos e Implementação em linguagem C Março - 2009 1 Conceitos 2 Organização dos dados Em determinadas aplicações, as pilhas e filas representam estruturas de dados importantes, nas quais seus elementos

Leia mais

Atividade de laboratório listas encadeadas simples

Atividade de laboratório listas encadeadas simples Atividade de laboratório listas encadeadas simples 1. Estrutura básica Uma lista encadeada simples é uma estrutura de dados composta de uma seqüência de estruturas elementares chamadas nós. Cada nó contém

Leia mais

- Estruturas e aplicações

- Estruturas e aplicações 1 MCTA028 Programação Estruturada - Estruturas e aplicações Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti Luiz Rozante 3Q-2018 Estruturas (=registros) 2 Linguagem

Leia mais

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior

ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior ÁRVORES ABB (ÁRVORES BINÁRIAS DE BUSCAS) Sérgio Carlos Portari Júnior Árvore Binária de Busca (ABB) o valor associado à raiz é sempre maior que o valor associado a qualquer nó da sub-árvore à esquerda

Leia mais

INF 1620 P2-01/11/03 Questão 1 Nome:

INF 1620 P2-01/11/03 Questão 1 Nome: INF 1620 P2-01/11/03 Questão 1 Considere a implementação de uma lista encadeada para armazenar as notas dos alunos de uma turma dada pelo tipo abaixo: struct lista { char nome[81]; int mat; float p1, p2,

Leia mais

Árvores Binárias Balanceadas Estrutura de Dados I

Árvores Binárias Balanceadas Estrutura de Dados I - entro de iências Exatas, Naturais e de Saúde Departamento de omputação Árvores inárias alanceadas Estrutura de Dados I OM06992 - Estrutura de Dados I Prof. Marcelo Otone guiar marcelo.aguiar@ufes.br

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

Árvore estritamente binária É uma árvore onde todos os nós que não são folha possuem dois filhos.

Árvore estritamente binária É uma árvore onde todos os nós que não são folha possuem dois filhos. Árvore estritmente binári É um árvore onde todos os nós que não são folh possuem dois filhos. Ex.: 434 Árvore binári complet Um árvore binári complet de profundidde d é um árvore estritmente binári onde

Leia mais

Algoritmos e Estruturas de Dados II IEC013

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

Leia mais

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

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

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos

Leia mais

Tipos abstratos de dados; pilhas e filas

Tipos abstratos de dados; pilhas e filas 1 Tipos abstratos de dados; pilhas e filas Além do Sedgewick (sempre leiam o Sedgewick), veja http://www.ime.usp.br/~pf/algoritmos/aulas/pilha.html http://www.ime.usp.br/~pf/algoritmos/aulas/fila.html

Leia mais

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

A Pilha. Aula 02. 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 A Pilha Aula 02 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/5

Leia mais

void push(int i){ if (num<max) vet[num++]=i; else { printf(">>> Erro: overflow na pilha!!!\n"); printf("%d nao foi empilhado!!!

void push(int i){ if (num<max) vet[num++]=i; else { printf(>>> Erro: overflow na pilha!!!\n); printf(%d nao foi empilhado!!! Estruturas de Dados Lista 2: soluções J. L. Rangel 1. Suponha que uma pilha é representada através de um vetor vet e de um inteiro num. As declarações podem ser #define MAX 100 int vet[max], num; Escreva

Leia mais

Programação II. Vetores Bidimensionais e Vetores de Ponteiros. Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Vetores Bidimensionais e Vetores de Ponteiros. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Vetores Bidimensionais e Vetores de Ponteiros Bruno Feijó Dept. de Informática, PUC-Rio Array (Vetor) Bidimensional 0 0 1 2 3 4 5 6 7 8 14 1 2 Array (Vetor) Bidimensional vs Ponteiros Quando

Leia mais

CONSTRUÇÃO DE ALGORITMOS E PROGRAMAS

CONSTRUÇÃO DE ALGORITMOS E PROGRAMAS CONSTRUÇÃO DE ALGORITMOS E PROGRAMAS O computdor é cpz de mnipulr e rmzenr um grnde quntidde de ddos ou informções com lto desempenho, liberndo o homem pr outrs trefs ns quis o seu conhecimento é indispensável.

Leia mais

FACULDADE DE TECNOLOGIA SENAC GOIÁS ADELTON HENRIQUE ABISHAI LEMES BORGES NETO HENRIQUE FERREIRA DA SILVA

FACULDADE DE TECNOLOGIA SENAC GOIÁS ADELTON HENRIQUE ABISHAI LEMES BORGES NETO HENRIQUE FERREIRA DA SILVA FACULDADE DE TECNOLOGIA SENAC GOIÁS ADELTON HENRIQUE ABISHAI LEMES BORGES NETO HENRIQUE FERREIRA DA SILVA ESTRUTURA DE DADOS GOIANIA 2015/2 ADELTON HENRIQUE ABISHAI LEMES BORGES NETO HENRIQUE FERREIRA

Leia mais

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

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

Leia mais

Métodos Computacionais. Variações de Listas Encadeadas

Métodos Computacionais. Variações de Listas Encadeadas Métodos Computacionais Variações de Listas Encadeadas Variações de Listas Encadeadas Listas podem variar quanto ao: Tipo de encadeamento Simples Circulares Duplas Circulares e Duplas Conteúdo Tipos Primitivos

Leia mais

26/8/2009 ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CAPACIDADE DE REPRESENTAÇÃO CES-11. Revisão. Tipo Lógico: Tipo Inteiro: Tipo Caractere:

26/8/2009 ALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CAPACIDADE DE REPRESENTAÇÃO CES-11. Revisão. Tipo Lógico: Tipo Inteiro: Tipo Caractere: ALGORITMOS E ESTRUTURAS DE DADOS Prof. Pulo André Cstro uloc@it.br Sl 110 Prédio d Comutção www.com.it.br/~uloc IECE - ITA Tios esclres rimitivos Tios esclres rimitivos Tio Inteiro: Domínio: números inteiros

Leia mais

Programação II. Tipos Estruturados

Programação II. Tipos Estruturados Programação II Tipos Estruturados Parte 1: struct Parte 2: Ponteiros para Estrutura Estruturas e Memória Bruno Feijó Dept. de Informática, PUC-Rio struct Dados Compostos Até agora tipos simples: char,

Leia mais

Melhores momentos AULA 14

Melhores momentos AULA 14 Melhores momentos AULA 14 Filas Fonte: http://justoutsidetheboxcartoon.com/ PF 5.1 http://www.ime.usp.br/ pf/algoritmos/aulas/la.html Filas Uma la (=queue) é uma lista dinâmica em que todas as inserções

Leia mais

2ª Lista de Exercícios

2ª Lista de Exercícios Universidade Federal de Minas Gerais Departamento de Ciência da Computação Algoritmos e Estruturas de Dados II (Turmas M, N, W, F) 1º Semestre de 2012 Profs. Camilo Oliveira, Gisele Pappa, Ítalo Cunha,

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

ponteiros INF Programação I Prof. Roberto Azevedo

ponteiros INF Programação I Prof. Roberto Azevedo ponteiros INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo razevedo@inf.puc-rio.br ponteiros tópicos o que são ponteiros operadores usados com ponteiros passagem de ponteiros para funções referência

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

//Declaração do TAD pilha. // As operações definidas para esse tipo são criar() push() pop() destroi() // typedef struct pilha TPilha;

//Declaração do TAD pilha. // As operações definidas para esse tipo são criar() push() pop() destroi() // typedef struct pilha TPilha; Declaração do TAD pilha. As operações definidas para esse tipo são criar() push() pop() destroi() typedef struct pilha TPilha; cria a pilha e retorna o ponteiro para o tipo Pilha TPilha* criar(void); Empilha

Leia mais

12. Filas Interface do tipo fila

12. Filas Interface do tipo fila 12. Filas W. Celes e J. L. Rangel Outra estrutura de dados bastante usada em computação é a fila. Na estrutura de fila, os acessos aos elementos também seguem uma regra. O que diferencia a fila da pilha

Leia mais

Programação II. Vetor de Tipo Estruturado e Vetor de Ponteiros. Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Vetor de Tipo Estruturado e Vetor de Ponteiros. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Vetor de Tipo Estruturado e Vetor de Ponteiros Bruno Feijó Dept. de Informática, PUC-Rio Vetores e Tipos Estruturados Dado um tipo estruturado T (com 3 campos, por exemplo), podemos ter

Leia mais

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

Estruturas de Dados. Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais: Estruturas de Dados Pilhas Prof. Ricardo J. G. B. Campello Créditos Parte dos slides a seguir são adaptações, extensões e traduções para C dos originais: disponíveis em http://ww3.datastructures.net/ cedidos

Leia mais

Linguagem C: Listas Encadeadas

Linguagem C: Listas Encadeadas Prof. Paulo R. S. L. Coelho paulo@facom.ufu.br Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Organização 1 Introdução 2 3 Organização Introdução 1 Introdução 2 3 Introdução Introdução

Leia mais

Lista: conceito, representação e algoritmos

Lista: conceito, representação e algoritmos Lista: conceito, representação e algoritmos SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Problema Imaginem a situação da automação de uma biblioteca Todos os livros devem ser cadastrados

Leia mais

Programação II. Tipos Estruturados. Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Tipos Estruturados. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Tipos Estruturados Bruno Feijó Dept. de Informática, PUC-Rio Dados Compostos Até agora tipos simples: char, int, float,. Necessidade por dados compostos, por tipos estruturados Ex.: pontos

Leia mais

Estruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1

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

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos

Leia mais

Pilhas e Filas. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.2 e 3.3

Pilhas e Filas. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.2 e 3.3 Pilhas e Filas Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.2 e 3.3 http://www2.dcc.ufmg.br/livros/algoritmos/ PILHAS Pilha É uma lista linear em que todas as inserções, retiradas e, geralmente,

Leia mais

Estruturas de Dados Aula 16: Árvores com Número Variável 13/06/2011

Estruturas de Dados Aula 16: Árvores com Número Variável 13/06/2011 Estruturas de Dados Aula 16: Árvores com Número Variável de Filhos 13/06/2011 1 Fontes Bibliográficas Livros: Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo 13; Projeto de Algoritmos

Leia mais

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Ponteiros Alocação dinâmica de memória Recursão INSTITUTO DE COMPUTAÇÃO - UFF 2 PONTEIROS PONTEIROS C permite o armazenamento

Leia mais

Computação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos

Computação I - C Prova /10/ Profs. Adriano Cruz e Valeria Bastos Computação I - C Prova 2 2016-2 14/10/2016 - Profs. Adriano Cruz e Valeria Bastos Nome: DRE: Observação: Justifique todas as respostas dadas. Some nte serão aceitas respostas com justificativas. Questão

Leia mais

DAS5102 Fundamentos da Estrutura da Informação

DAS5102 Fundamentos da Estrutura da Informação Pilhas A estrutura de dados Pilha emula a forma de organização de objetos intuitiva que é utilizada diariamente nos mais diversos contextos da vida humana. Containeres são empilhados e desempilhados diariamente

Leia mais

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010

Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010 Departamento de Informática - PUC-Rio INF 1007 Programação 2 P3 26/11/2010 Aluno: Matrícula: Turma: Instruções: 1) Escreva seu nome completo, matrícula e turma em todas as folhas desta prova; 2) A prova

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 14 Árvores Binárias Edirlei Soares de Lima Árvores Uma estrutura de dados do tipo árvore permite que dados sejam organizados de maneira hierárquica.

Leia mais

Listas ligadas/listas encadeadas

Listas ligadas/listas encadeadas 1 Listas ligadas/listas encadeadas Leitura recomendada: http://www.ime.usp.br/~pf/algoritmos/aulas/lista.html 2 Processamento elementar de listas Definição mais restritiva (tipo de lista possivelmente

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

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

Listas Duplamente Encadeadas

Listas Duplamente Encadeadas Listas Duplamente Encadeadas! quando for preciso seguir a seqüência de elementos em ambos os sentidos! cada nó possui dois ponteiros: ant e prox ant prox a b c d Início Fim 1 Listas Duplamente Encadeadas

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

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

Programação Estruturada Prof. Rodrigo Hausen Agregados de Dados Heterogêneos (structs)

Programação Estruturada Prof. Rodrigo Hausen   Agregados de Dados Heterogêneos (structs) Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Agregados de Dados Heterogêneos (structs) 1 AGREGADO HOMOGÊNEO Um agregado homogêneo de dados é um conjunto de dados que são necessariamente

Leia mais

INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15

INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15 INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15 1. Um número racional é expresso por dois inteiros: um numerador e um denominador (este último diferente de zero!). Implemente um TAD para representar números

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