1 Tipos Abstratos de Dados Pilhas e Filas TPA – 2008 –1 Prof. Mateus Costa.

Slides:



Advertisements
Apresentações semelhantes
Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de.
Advertisements

LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Aula T10 – BCC202 Listas – Parte 2 Túlio Toffolo www. decom. ufop
Um programa em C Bibliotecas Variáveis globais
Marco Antonio Montebello Júnior
Pilhas e Filas CONTEÚDO (1) Pilhas (2) Filas.
Estruturas de Dados Árvores Binárias
Recursividade Prof. Rosana Palazon.
Listas encadeadas Prof. Rosana Palazon.
Algoritmos de manipulação de estruturas elementares de dados
Listas duplamente encadeadas
Programação II Estruturas de Dados
Programação II Estruturas de Dados
TADS – Tipos Abstratos de Dados
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
Aula T11 – BCC202 Pilhas Túlio Toffolo
Pilha David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Prof.: Sergio Pacheco Estruturas de Dados I Prof.: Sergio Pacheco 1.
Listas com Ponteiros Listas encadeadas Listas circulares.
Estrutura de dados Busca
Instrutor: Nilo Menezes
Slides: Prof. João Fabro UTFPR - Curitiba
Fundamentos de Programação 1
Lista Encadeada Circular Lista Duplamente Encadeada
Listas Encadeadas.
Revisão da Linguagem C.
Algoritmos e Estruturas de Dados
Pesquisa em Memória Primária
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Estruturas de Dados com Jogos
INTELIGÊNCIA ARTIFICIAL
Tipos Abstratos de Dados
Filas - Definição Uma fila possui o comportamento: O primeiro que chega é o primeiro que sai. O único elemento que pode ser removido da fila é o primeiro.
Árvores Binárias de Pesquisa
TAD Pilha com Alocação Dinâmica de Memória
Conceitos e implementação em C
Heap Sort TPA – Prof. Mateus Costa
Lista Encadeada Circular Lista Duplamente Encadeada
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação
Seminário 1: Revisão de C
Denise Guliato Faculdade de Computação – UFU
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS
Pilhas Profa. Nádia Félix.
Estruturas de Dados Aula 11: TAD Pilha
Árvore Binária de Busca
Filas. #define MAXFILA 100 typedef struct queue { int item [ MAXFILA]; int inic, fim; } fila; fila q;
Introdução à Linguagem C
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Estruturas de Dados Aula 15: Árvores
Prof. Alessandro Gonçalves
Revisão Luis Antonio Tavares
INE5408 Estruturas de Dados
Profa. Maria Augusta Constante Puget
Profa. Juliana Mafra ESTRUTURA DE DADOS 30 de Setembro de 2009 Faculdade de Informática e Tecnologia de Pernambuco.
Estrutura de Dados Prof. André Cypriano M. Costa
Estrutura de Dados Prof. André Cypriano M. Costa
UNIVERSIDADE FEDERAL DE MINAS GERAIS Pilhas e Filas Cristiano Arbex Valle Vinicius Fernandes dos Santos
INE5408 Estruturas de Dados Estruturas de Dados básicas utilizando Vetores - Introdução - Pilhas usando Vetores - Filas usando Vetores.
Transcrição da apresentação:

1 Tipos Abstratos de Dados Pilhas e Filas TPA – 2008 –1 Prof. Mateus Costa

2 Pilhas Comportamento: O último que chega é o primeiro que sai. O comportamento da pilha pode ser especificado por 3 operações: Empilha (push): Insere um elemento na pilha Desempilha (pop) : remove o último elemento que foi inserido na pilha PilhaVazia: operação lógica: retorna verdadeiro se não há nenhum elemento na pilha e falso caso contrário.

3 Pilhas A restrição fundamental: o elemento a ser removido é sempre o último que foi inserido Obedecendo esta regra, não importa a estrutura de armazenamento utilizada.

4 Exemplo: Pilha das Calculadoras HP Tamanho 4 Tipo Básico: Real #define MAXPILHA 4 #define true 1 #define false 0 #define MAIORIGUAL(X,Y)((X>=Y)?(true): (false)) typedef float elemento; typedef struct { int topo; elemento itens[MAXPILHA]; }Pilha;

5 Exemplo: Pilha das Calculadoras HP Operações int pilhaCheia(Pilha p); int pilhaVazia(Pilha p); void inicializaPilha(Pilha *p); void empilha (Pilha *p, elemento ele); void mostraTopo(Pilha p);

6 Exemplo: Pilha das Calculadoras HP: Inicializa Pilha (topo = -1) - Pilha Cheia – Pilha Vazia void inicializaPilha(Pilha *p) { p->topo=-1; } int pilhaCheia(Pilha p) { return MAIORIGUAL(p.topo,MAXPILHA-1); } int pilhaVazia(Pilha p) { return ((p.topo == -1) ? true : false ); }

7 Exemplo: Pilha das Calculadoras HP empilha – insere um elemento na pilha void empilha (Pilha *p, elemento ele){ if (!pilhaCheia(*p)) { p->topo++; p->itens[p->topo] = ele; } else{ fprintf(stderr, MSG_PILHACHEIA); }

8 Exemplo: Pilha das Calculadoras HP desempilha – remove o último elemento inserido na pilha elemento desempilha(Pilha *p) { elemento ele= 0.0; if (pilhaVazia(*p)==false) { ele = p->itens[p->topo]; p->topo--; } else{ fprintf(stderr, MSG_PILHAVAZIA); } return ele; }

9 Exemplo: Pilha das Calculadoras HP mostra topo – mostra o elemento que esta no topo da pilha void mostraTopo(Pilha p){ if (pilhaVazia(p)==false) { printf("%5.2f\n", p.itens[p.topo]); } else { printf("PV: %5.2f\n", 0.0); }

10 Exemplo: Pilha das Calculadoras HP Funcionamento das operações aritméticas Algoritmo Faça { Cada valor informado é empilhado Se um operador (+,-,*,/) é informado: A calculadora tenta desempilhar os dois últimos valores empilhados Em caso de sucesso realiza a operação correspondente com os valores desempilhados. O resultado da operação e empilhado. O topo da pilha é mostrado } até (desligamento)

11 Exemplo: Pilha das Calculadoras HP main – implementa o algoritmo da calculadora HP parte 1 – empilha os dígitos main() { Pilha p1; inicializaPilha(&p1); char x; float a,b, result; char input[2]; do { // loop principal: O programa permanece lendo caracteres do teclado x = getch(); result = 0.0; if(isdigit(x)){ // se o caracter lido é um dígito empilha o mesmo printf("Empilhando %c\n", x); input[0]=x; input[1]='\0'; empilha(&p1, atof(input)); } // fim se é digito

12 Exemplo: Pilha das Calculadoras HP main – implementa o algoritmo da calculadora HP parte 2 - faz operações else { //se não eh digito if (isoperator(x)){ // se eh operador if (pilhaVazia(p1) == false) { a = desempilha(&p1); if (pilhaVazia(p1) == false) { b = desempilha(&p1); result = fazOperacao(a,b,x); empilha(&p1, result); } mostraTopo(p1); } while(x !='q'); }

13 Exemplo: Pilha das Calculadoras HP main – implementa o algoritmo da calculadora HP macros – função faz Operação isdigit(x) – Macro já definida na biblioteca padrão de C isoperator(x) – Macro construída: #define isoperator(A) (((A == '+')||(A=='-')||(A=='*')||(A=='/')) ? (true) : (false)) float fazOperacao(float a, float b, char op) { switch(op) { case '+': return a+b; case '-': return a-b; case '*': return a*b; case '/': return a/b; }

14 Exemplo: Pilha das Calculadoras HP Exercícios - Modificações 1.Nas Calculadoras HP não ocorre pilha cheia. Se não houver mais espaço, ao inserir um novo elemento os elementos na pilha são deslocado e o elemento mais antigo é descartado. Corrija o programa dado para que tenha este comportamento. 2. Adapte o programa dado para que possam ser inseridos números com mais de um dígito.