Buscar

Pilhas C v7

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
ESTRUTURAS DE DADOS 
► Pilhas 
(Linguagem C) 
Prof. Dr. Marcelo Duduchi 
Aux. Docente Lucio Nunes 
Estruturas de Dados 
 Ao implementarmos programas de computador 
estamos de certa forma tentando representar o 
mundo real pela computação; 
 Os dados a serem processados no computador 
representam uma abstração de parte da realidade na 
medida em que representam características 
selecionadas das entidades do mundo real; 
2 
Estruturas de Dados 
 A forma segundo a qual os bits são agrupados, interpretados e 
manipulados pelo computador normalmente não nos interessa 
quando a nossa preocupação maior é resolver um problema 
específico; 
 Felizmente, as linguagens atuais oferecem um conjunto básico de 
tipos de dados primitivos (inteiros, reais, caractere, booleano etc.) 
que podemos usar nas soluções de problemas; 
 Da mesma forma, temos mecanismos que permitem criar 
agrupamentos complexos de dados a partir desses tipos primitivos; 
3 
Estruturas de Dados 
 Para representar o mundo computacionalmente é necessário 
modelar; 
 É neste particular que o conceito de tipos abstratos de dados passa 
a ser muito importante para a computação; 
 Um tipo abstrato de dados é formado por: 
 Um conjunto de valores; 
 Uma série de funções que podem ser aplicadas a estes valores. 
 O modelo usado para representar a solução de uma classe de 
problemas podemos chamar de estrutura de dados; 
4 
Estruturas de Dados 
 O estudo das estruturas de dados envolve dois 
objetivos básicos: 
 Teórico: Identificar e desenvolver modelos, determinando 
que classes de problemas podem resolver; 
 Prático: Criar representações concretas dos objetivos e 
desenvolver sub-rotinas capazes de atuar como 
representações. 
5 
Listas Lineares 
 Uma lista é uma coleção de elementos do mesmo tipo 
dispostos linearmente que podem ou não seguir uma 
determinada organização; 
 Exemplo: [E
1
, E
2
, E
3
, ..., E
n
], onde n ≥ 0; 
 Uma lista de pagamentos pode ser constituída por: 
prestação do carro, cartão de crédito, conta de luz, 
condomínio, televisão a cabo e prestação do crediário; 
6 
2 
Listas Lineares 
 Para a representação de alguns modelos do 
mundo real é necessário limitar o funcionamento 
das listas lineares; 
 É neste contexto que surgem as listas lineares 
restritas. As mais utilizadas são: 
Pilhas e 
 Filas. 
7 
Pilhas 
 Uma lista linear onde tanto a entrada quanto a saída 
precisa ser feita pela mesma extremidade é conhecida 
como pilha; 
 Neste caso o último elemento que entrar é o primeiro a 
sair (Last In / First Out); 
 Existem duas funções que se aplicam a todas as pilhas: 
 PUSH: insere o item no topo da pilha; 
 POP: remove o item do topo da pilha. 
8 
Pilhas (modelo conceitual) 
9 
 
 
 
 
 
Novos elementos são 
armazenados no topo 
da pilha. 
A 
Pilhas (modelo conceitual) 
Push 
10 
 
 
 
 
 
Novos elementos são 
armazenados no topo 
da pilha. 
A 
Pilhas (modelo conceitual) 
11 
 
 
 
 
 
Novos elementos são 
armazenados no topo 
da pilha. 
B 
A 
Pilhas (modelo conceitual) 
Push 
12 
 
 
 
 
 
Novos elementos são 
armazenados no topo 
da pilha. 
A 
B 
3 
Pilhas (modelo conceitual) 
13 
 
 
 
 
 
Novos elementos são 
armazenados no topo 
da pilha. 
C 
A 
B 
Pilhas (modelo conceitual) 
Push 
14 
 
 
 
 
 
Novos elementos são 
armazenados no topo 
da pilha. 
A 
B 
C 
Pilhas (modelo conceitual) 
15 
 
 
 
 
 
Novos elementos são 
armazenados no topo 
da pilha. 
D 
A 
B 
C 
Pilhas (modelo conceitual) 
Push 
16 
 
 
 
 
 
Novos elementos são 
armazenados no topo 
da pilha. 
A 
B 
C 
D 
Pilhas (modelo conceitual) 
17 
 
 
 
 
 
A 
B 
C 
D Sequência armazenada 
em pilha. 
Pilhas (modelo conceitual) 
Pop 
18 
 
 
 
 
 
A 
B 
C 
D 
O último elemento que 
entrou será o primeiro a 
sair (LIFO). 
4 
Pilhas (modelo conceitual) 
Pop 
19 
 
 
 
 
 
A 
B 
C 
O último elemento que 
entrou será o primeiro a 
sair (LIFO). 
Pilhas (modelo conceitual) 
Pop 
20 
 
 
 
 
 
A 
B 
O último elemento que 
entrou será o primeiro a 
sair (LIFO). 
Pilhas (modelo conceitual) 
Pop 
21 
 
 
 
 
 
A 
O último elemento que 
entrou será o primeiro a 
sair (LIFO). 
Pilhas (representação gráfica) 
22 
 
 
 
 
 
 
 
 
 
 
Topo → 
Pilhas (representação gráfica) 
23 
 
 
 
 
 
push(pilha, 'D') 
 
 
 
 
 
Topo → 
D 
Pilhas (representação gráfica) 
24 
 
 
 
 
D 
 
 
 
 
Topo → 
5 
Pilhas (representação gráfica) 
25 
 
 
 
 
D 
 
 
 
 
Topo → 
 
 
 
 
D 
 
 
 
 
Topo → 
Pilhas (representação gráfica) 
26 
 
 
 
 
D 
 
 
 
 
Topo → 
 
 
 
 
 
pop(pilha) 
 
 
 
 
 
Topo → 
D 
Pilhas (representação gráfica) 
27 
 
 
 
 
D 
 
 
 
 
Topo → 
 
 
 
 
 
 
 
 
 
 
Topo → 
Pilhas (representação gráfica) 
28 
 
 
 
 
D 
 
 
 
 
Topo → 
 
 
 
 
 
 
 
 
 
 
Topo → 
 
 
 
 
 
 
 
 
 
 
Topo → 
Pilhas (representação gráfica) 
29 
 
 
 
 
D 
 
 
 
 
Topo → 
 
 
 
 
 
 
 
 
 
 
Topo → 
 
 
 
 
 
push(pilha, 'A') 
 
 
 
 
 
Topo → 
A 
Pilhas (representação gráfica) 
30 
 
 
 
 
D 
 
 
 
 
Topo → 
 
 
 
 
 
 
 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
6 
Pilhas (representação gráfica) 
31 
 
 
 
 
D 
 
 
 
 
Topo → 
 
 
 
 
 
 
 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
Pilhas (representação gráfica) 
32 
 
 
 
 
D 
 
 
 
 
Topo → 
 
 
 
 
 
 
 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
 
 
 
 
A 
push(pilha, 'V') 
 
 
 
 
Topo → 
V 
Pilhas (representação gráfica) 
33 
 
 
 
 
D 
 
 
 
 
Topo → 
 
 
 
 
 
 
 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
 
 
 
V 
A 
 
 
 
Topo → 
Pilhas (representação gráfica) 
34 
 
 
 
 
D 
 
 
 
 
Topo → 
 
 
 
 
 
 
 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
 
 
 
V 
A 
 
 
 
Topo → 
 
 
 
V 
A 
 
 
 
Topo → 
Pilhas (representação gráfica) 
35 
 
 
 
 
D 
 
 
 
 
Topo → 
 
 
 
 
 
 
 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
 
 
 
V 
A 
 
 
 
Topo → 
 
 
 
 
A 
pop(pilha) 
 
 
 
 
Topo → 
V 
Pilhas (representação gráfica) 
36 
 
 
 
 
D 
 
 
 
 
Topo → 
 
 
 
 
 
 
 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
 
 
 
V 
A 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
7 
Pilhas (representação gráfica) 
37 
 
 
 
 
D 
 
 
 
 
Topo → 
 
 
 
 
 
 
 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
 
 
 
V 
A 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
Pilhas (representação gráfica) 
38 
 
 
 
 
D 
 
 
 
 
Topo → 
 
 
 
 
 
 
 
 
 
 
Topo →A 
 
 
 
 
Topo → 
 
 
 
V 
A 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
 
 
 
 
A 
push(pilha, 'B') 
 
 
 
 
Topo → 
B 
Pilhas (representação gráfica) 
39 
 
 
 
 
D 
 
 
 
 
Topo → 
 
 
 
 
 
 
 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
 
 
 
V 
A 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
 
 
 
B 
A 
 
 
 
Topo → 
Pilhas (representação gráfica) 
40 
 
 
 
B 
A 
 
 
 
Topo → 
Pilhas (representação gráfica) 
41 
 
 
 
B 
A 
push(pilha, 'G') 
 
 
 
Topo → 
G 
Pilhas (representação gráfica) 
42 
 
 
G 
B 
A 
 
 
Topo → 
8 
Pilhas (representação gráfica) 
43 
 
 
G 
B 
A 
 
 
Topo → 
 
 
G 
B 
A 
 
 
Topo → 
Pilhas (representação gráfica) 
44 
 
 
G 
B 
A 
 
 
Topo → 
 
 
G 
B 
A 
push(pilha, 'H') 
 
 
Topo → 
H 
Pilhas (representação gráfica) 
45 
 
 
G 
B 
A 
 
 
Topo → 
 
H 
G 
B 
A 
 
Topo → 
Pilhas (representação gráfica) 
46 
 
 
G 
B 
A 
 
 
Topo → 
 
H 
G 
B 
A 
 
Topo → 
 
H 
G 
B 
A 
 
Topo → 
Pilhas (representação gráfica) 
47 
 
 
G 
B 
A 
 
 
Topo → 
 
H 
G 
B 
A 
 
Topo → 
 
 
G 
B 
A 
pop(pilha) 
 
 
Topo → 
H 
Pilhas (representação gráfica) 
48 
 
 
G 
B 
A 
 
 
Topo → 
 
H 
G 
B 
A 
 
Topo → 
 
 
G 
B 
A 
 
 
Topo → 
9 
Pilhas (representação gráfica) 
49 
 
 
G 
B 
A 
 
 
Topo → 
 
H 
G 
B 
A 
 
Topo → 
 
 
G 
B 
A 
 
 
Topo → 
 
 
G 
B 
A 
 
 
Topo → 
Pilhas (representação gráfica) 
50 
 
 
G 
B 
A 
 
 
Topo → 
 
H 
G 
B 
A 
 
Topo → 
 
 
G 
B 
A 
 
 
Topo → 
 
 
 
B 
A 
pop(pilha) 
 
 
 
Topo → 
G 
Pilhas (representação gráfica) 
51 
 
 
G 
B 
A 
 
 
Topo → 
 
H 
G 
B 
A 
 
Topo → 
 
 
G 
B 
A 
 
 
Topo → 
 
 
 
B 
A 
 
 
 
Topo → 
Pilhas (representação gráfica) 
52 
 
 
G 
B 
A 
 
 
Topo → 
 
H 
G 
B 
A 
 
Topo → 
 
 
G 
B 
A 
 
 
Topo → 
 
 
 
B 
A 
 
 
 
Topo → 
 
 
 
B 
A 
 
 
 
Topo → 
Pilhas (representação gráfica) 
53 
 
 
G 
B 
A 
 
 
Topo → 
 
H 
G 
B 
A 
 
Topo → 
 
 
G 
B 
A 
 
 
Topo → 
 
 
 
B 
A 
 
 
 
Topo → 
 
 
 
 
A 
pop(pilha) 
 
 
 
 
Topo → 
B 
Pilhas (representação gráfica) 
54 
 
 
G 
B 
A 
 
 
Topo → 
 
H 
G 
B 
A 
 
Topo → 
 
 
G 
B 
A 
 
 
Topo → 
 
 
 
B 
A 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
10 
Pilhas (representação gráfica) 
55 
 
 
G 
B 
A 
 
 
Topo → 
 
H 
G 
B 
A 
 
Topo → 
 
 
G 
B 
A 
 
 
Topo → 
 
 
 
B 
A 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
Pilhas (representação gráfica) 
56 
 
 
G 
B 
A 
 
 
Topo → 
 
H 
G 
B 
A 
 
Topo → 
 
 
G 
B 
A 
 
 
Topo → 
 
 
 
B 
A 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
 
 
 
 
 
pop(pilha) 
 
 
 
 
 
Topo → 
A 
Pilhas (representação gráfica) 
57 
 
 
G 
B 
A 
 
 
Topo → 
 
H 
G 
B 
A 
 
Topo → 
 
 
G 
B 
A 
 
 
Topo → 
 
 
 
B 
A 
 
 
 
Topo → 
 
 
 
 
A 
 
 
 
 
Topo → 
 
 
 
 
 
 
 
 
 
 
Topo → 
Pilhas (implementação) 
 Consideremos para a nossa implementação um grupo de 
operações: 
 create → inicializa a pilha 
 destroy → esvazia a pilha 
 isfull → verifica se está cheia 
 isempty → verifica se está vazia 
 push → insere um elemento 
 pop → retira um elemento 
 top → mostra o elemento do topo 
58 
Pilhas (definição da estrutura) 
59 
typedef struct pilha { 
 char vet[6]; 
 int topo; 
 } TPilha; 
TPilha 
vet topo 
0 1 2 3 4 5 
Pilhas (create, destroy, isfull e isempty) 
60 
void create(TPilha *p) { 
 p->topo = -1; 
} 
void destroy(TPilha *p) { 
 p->topo = -1; 
} 
int isfull(TPilha *p) { 
 if (p->topo == 5) 
 return 1; 
 else 
 return 0; 
} 
int isempty(TPilha *p) { 
 if (p->topo == -1) 
 return 1; 
 else 
 return 0; 
} 
11 
Pilhas (isfull e isempty) 
61 
int isfull(TPilha *p) { 
 return p->topo == 5; 
} 
int isempty(TPilha *p) { 
 return p->topo == -1; 
} 
char pop(TPilha *p) 
{ 
 char aux; 
 if (isempty(p)) { 
 printf("underflow\n"); 
 abort(); 
 } 
 aux = p->vet[p->topo]; 
 p->topo--; 
 return aux; 
} 
Pilhas (push e pop) 
62 
void push(TPilha *p, char x) 
{ 
 if (isfull(p) { 
 printf("overflow\n"); 
 abort(); 
 } 
 p->topo++; 
 p->vet[p->topo] = x; 
} 
Pilhas (top) 
63 
char top(TPilha *p) { 
 if (isempty(p)) { 
 printf("underflow\n"); 
 abort(); 
 } 
 return p->vet[p->topo]; 
} 
Pilhas (exemplo de utilização) 
64 
void inverte(char s[]) { 
 int i, tam; 
 TPilha p; 
 create(&p); 
 tam = strlen(s); 
 for (i = 0; i < tam; i++) 
 push(&p, s[i]); 
 for (i = 0; !isempty(&p); i++) 
 s[i] = pop(&p); 
} 
 
 
 
 
 
Roma 
Pilhas (exemplo de utilização) 
65 
void inverte(char s[]) { 
 int i, tam; 
 TPilha p; 
 create(&p); 
 tam = strlen(s); 
 for (i = 0; i < tam; i++) 
 push(&p, s[i]); 
 for (i = 0; !isempty(&p); i++) 
 s[i] = pop(&p); 
} 
 
 
 
 
R 
Roma 
Pilhas (exemplo de utilização) 
66 
void inverte(char s[]) { 
 int i, tam; 
 TPilha p; 
 create(&p); 
 tam = strlen(s); 
 for (i = 0; i < tam; i++) 
 push(&p, s[i]); 
 for (i = 0; !isempty(&p); i++) 
 s[i] = pop(&p); 
} 
 
 
 
o 
R 
Roma 
12 
Pilhas (exemplo de utilização) 
67 
void inverte(char s[]) { 
 int i, tam; 
 TPilha p; 
 create(&p); 
 tam = strlen(s); 
 for (i = 0; i < tam; i++) 
 push(&p, s[i]); 
 for (i = 0; !isempty(&p); i++) 
 s[i] = pop(&p); 
} 
 
 
m 
o 
R 
Roma 
Pilhas (exemplo de utilização) 
68 
void inverte(char s[]) { 
 int i, tam; 
 TPilha p; 
 create(&p); 
 tam = strlen(s); 
 for (i = 0; i < tam; i++) 
 push(&p, s[i]); 
 for (i = 0; !isempty(&p); i++) 
 s[i] = pop(&p); 
} 
Roma 
 
a 
m 
o 
R 
Pilhas (exemplo de utilização) 
69 
void inverte(char s[]) { 
 int i, tam; 
 TPilha p; 
 create(&p); 
 tam = strlen(s); 
 for (i = 0; i < tam; i++) 
 push(&p, s[i]); 
 for (i = 0; !isempty(&p); i++) 
 s[i] = pop(&p); 
} 
 
a 
m 
o 
R 
Pilhas (exemplo de utilização) 
70 
void inverte(char s[]) { 
 int i, tam; 
 TPilha p; 
 create(&p); 
 tam = strlen(s); 
 for (i = 0; i < tam; i++) 
 push(&p, s[i]); 
 for (i = 0; !isempty(&p); i++) 
 s[i] = pop(&p); 
} 
 
 
m 
o 
R 
a 
Pilhas (exemplo de utilização) 
71 
void inverte(char s[]) { 
 int i, tam; 
 TPilha p; 
 create(&p); 
 tam = strlen(s); 
 for (i = 0; i < tam; i++) 
 push(&p, s[i]); 
 for (i = 0; !isempty(&p); i++) 
 s[i] = pop(&p);} 
 
 
 
o 
R 
am 
Pilhas (exemplo de utilização) 
72 
void inverte(char s[]) { 
 int i, tam; 
 TPilha p; 
 create(&p); 
 tam = strlen(s); 
 for (i = 0; i < tam; i++) 
 push(&p, s[i]); 
 for (i = 0; !isempty(&p); i++) 
 s[i] = pop(&p); 
} 
 
 
 
 
R 
amo 
13 
Pilhas (exemplo de utilização) 
73 
void inverte(char s[]) { 
 int i, tam; 
 TPilha p; 
 create(&p); 
 tam = strlen(s); 
 for (i = 0; i < tam; i++) 
 push(&p, s[i]); 
 for (i = 0; !isempty(&p); i++) 
 s[i] = pop(&p); 
} 
 
 
 
 
 
amoR 
Pilhas (aplicações) 
 Pilha de chamada de rotinas: 
Caso seja uma chamada, colocar o endereço da 
próxima instrução na pilha, executando a rotina 
chamada; 
Caso seja um “retorne”, retirar um endereço da 
pilha, passando a executá-lo. 
74 
Pilhas (aplicações) 
75 
INSTRUÇÃO ESTADO DA PILHA 
e0 
Rotina P 
 e1: A( ); 
 e2: C( ); 
 e3: B( ); 
 e4: Retorne; 
 
Rotina A 
 e5: B( ); 
 e6: Retorne; 
 
Rotina B 
 e7: Retorne; 
 
Rotina C 
 e8: Retorne; 
Pilhas (aplicações) 
76 
INSTRUÇÃO ESTADO DA PILHA 
e0 
e1: A( ); e0 
Rotina P 
 e1: A( ); 
 e2: C( ); 
 e3: B( ); 
 e4: Retorne; 
 
Rotina A 
 e5: B( ); 
 e6: Retorne; 
 
Rotina B 
 e7: Retorne; 
 
Rotina C 
 e8: Retorne; 
Pilhas (aplicações) 
77 
INSTRUÇÃO ESTADO DA PILHA 
e0 
e1: A( ); e0, e2 
Rotina P 
 e1: A( ); 
 e2: C( ); 
 e3: B( ); 
 e4: Retorne; 
 
Rotina A 
 e5: B( ); 
 e6: Retorne; 
 
Rotina B 
 e7: Retorne; 
 
Rotina C 
 e8: Retorne; 
Pilhas (aplicações) 
78 
INSTRUÇÃO ESTADO DA PILHA 
e0 
e1: A( ); e0, e2 
e5: B( ); e0, e2 
Rotina P 
 e1: A( ); 
 e2: C( ); 
 e3: B( ); 
 e4: Retorne; 
 
Rotina A 
 e5: B( ); 
 e6: Retorne; 
 
Rotina B 
 e7: Retorne; 
 
Rotina C 
 e8: Retorne; 
14 
Pilhas (aplicações) 
79 
INSTRUÇÃO ESTADO DA PILHA 
e0 
e1: A( ); e0, e2 
e5: B( ); e0, e2, e6 
Rotina P 
 e1: A( ); 
 e2: C( ); 
 e3: B( ); 
 e4: Retorne; 
 
Rotina A 
 e5: B( ); 
 e6: Retorne; 
 
Rotina B 
 e7: Retorne; 
 
Rotina C 
 e8: Retorne; 
Pilhas (aplicações) 
80 
INSTRUÇÃO ESTADO DA PILHA 
e0 
e1: A( ); e0, e2 
e5: B( ); e0, e2, e6 
e7: Retorne; e0, e2, e6 
Rotina P 
 e1: A( ); 
 e2: C( ); 
 e3: B( ); 
 e4: Retorne; 
 
Rotina A 
 e5: B( ); 
 e6: Retorne; 
 
Rotina B 
 e7: Retorne; 
 
Rotina C 
 e8: Retorne; 
Pilhas (aplicações) 
81 
INSTRUÇÃO ESTADO DA PILHA 
e0 
e1: A( ); e0, e2 
e5: B( ); e0, e2, e6 
e7: Retorne; e0, e2 
e6: Retorne; e0, e2 
Rotina P 
 e1: A( ); 
 e2: C( ); 
 e3: B( ); 
 e4: Retorne; 
 
Rotina A 
 e5: B( ); 
 e6: Retorne; 
 
Rotina B 
 e7: Retorne; 
 
Rotina C 
 e8: Retorne; 
Pilhas (aplicações) 
82 
INSTRUÇÃO ESTADO DA PILHA 
e0 
e1: A( ); e0, e2 
e5: B( ); e0, e2, e6 
e7: Retorne; e0, e2 
e6: Retorne; e0 
e2: C( ); e0 
Rotina P 
 e1: A( ); 
 e2: C( ); 
 e3: B( ); 
 e4: Retorne; 
 
Rotina A 
 e5: B( ); 
 e6: Retorne; 
 
Rotina B 
 e7: Retorne; 
 
Rotina C 
 e8: Retorne; 
Pilhas (aplicações) 
83 
INSTRUÇÃO ESTADO DA PILHA 
e0 
e1: A( ); e0, e2 
e5: B( ); e0, e2, e6 
e7: Retorne; e0, e2 
e6: Retorne; e0 
e2: C( ); e0, e3 
Rotina P 
 e1: A( ); 
 e2: C( ); 
 e3: B( ); 
 e4: Retorne; 
 
Rotina A 
 e5: B( ); 
 e6: Retorne; 
 
Rotina B 
 e7: Retorne; 
 
Rotina C 
 e8: Retorne; 
Pilhas (aplicações) 
84 
INSTRUÇÃO ESTADO DA PILHA 
e0 
e1: A( ); e0, e2 
e5: B( ); e0, e2, e6 
e7: Retorne; e0, e2 
e6: Retorne; e0 
e2: C( ); e0, e3 
e8: Retorne; e0, e3 
Rotina P 
 e1: A( ); 
 e2: C( ); 
 e3: B( ); 
 e4: Retorne; 
 
Rotina A 
 e5: B( ); 
 e6: Retorne; 
 
Rotina B 
 e7: Retorne; 
 
Rotina C 
 e8: Retorne; 
15 
Pilhas (aplicações) 
85 
INSTRUÇÃO ESTADO DA PILHA 
e0 
e1: A( ); e0, e2 
e5: B( ); e0, e2, e6 
e7: Retorne; e0, e2 
e6: Retorne; e0 
e2: C( ); e0, e3 
e8: Retorne; e0 
e3: B( ); e0 
Rotina P 
 e1: A( ); 
 e2: C( ); 
 e3: B( ); 
 e4: Retorne; 
 
Rotina A 
 e5: B( ); 
 e6: Retorne; 
 
Rotina B 
 e7: Retorne; 
 
Rotina C 
 e8: Retorne; 
Pilhas (aplicações) 
86 
INSTRUÇÃO ESTADO DA PILHA 
e0 
e1: A( ); e0, e2 
e5: B( ); e0, e2, e6 
e7: Retorne; e0, e2 
e6: Retorne; e0 
e2: C( ); e0, e3 
e8: Retorne; e0 
e3: B( ); e0, e4 
Rotina P 
 e1: A( ); 
 e2: C( ); 
 e3: B( ); 
 e4: Retorne; 
 
Rotina A 
 e5: B( ); 
 e6: Retorne; 
 
Rotina B 
 e7: Retorne; 
 
Rotina C 
 e8: Retorne; 
Pilhas (aplicações) 
87 
INSTRUÇÃO ESTADO DA PILHA 
e0 
e1: A( ); e0, e2 
e5: B( ); e0, e2, e6 
e7: Retorne; e0, e2 
e6: Retorne; e0 
e2: C( ); e0, e3 
e8: Retorne; e0 
e3: B( ); e0, e4 
e7: Retorne; e0, e4 
Rotina P 
 e1: A( ); 
 e2: C( ); 
 e3: B( ); 
 e4: Retorne; 
 
Rotina A 
 e5: B( ); 
 e6: Retorne; 
 
Rotina B 
 e7: Retorne; 
 
Rotina C 
 e8: Retorne; 
Pilhas (aplicações) 
88 
INSTRUÇÃO ESTADO DA PILHA 
e0 
e1: A( ); e0, e2 
e5: B( ); e0, e2, e6 
e7: Retorne; e0, e2 
e6: Retorne; e0 
e2: C( ); e0, e3 
e8: Retorne; e0 
e3: B( ); e0, e4 
e7: Retorne; e0 
e4: Retorne; e0 
Rotina P 
 e1: A( ); 
 e2: C( ); 
 e3: B( ); 
 e4: Retorne; 
 
Rotina A 
 e5: B( ); 
 e6: Retorne; 
 
Rotina B 
 e7: Retorne; 
 
Rotina C 
 e8: Retorne; 
Pilhas (aplicações) 
89 
INSTRUÇÃO ESTADO DA PILHA 
e0 
e1: A( ); e0, e2 
e5: B( ); e0, e2, e6 
e7: Retorne; e0, e2 
e6: Retorne; e0 
e2: C( ); e0, e3 
e8: Retorne; e0 
e3: B( ); e0, e4 
e7: Retorne; e0 
e4: Retorne; e0 
e0: [volta p/ S.O.] 
Rotina P 
 e1: A( ); 
 e2: C( ); 
 e3: B( ); 
 e4: Retorne; 
 
Rotina A 
 e5: B( ); 
 e6: Retorne; 
 
Rotina B 
 e7: Retorne; 
 
Rotina C 
 e8: Retorne; 
Pilhas (infixa -> posfixa) 
90 
Infixa 
(((3 − 1) + (2 ∗ 4))/5) 
Posfixa 
3 1 − 2 4 ∗ + 5 / 
16 
Pilhas (infixa -> posfixa) 
91 
 
 
 
 
 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
Pilhas (infixa -> posfixa) 
92 
 
 
 
 
 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
Pilhas (infixa -> posfixa) 
93 
 
 
 
 
 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
Pilhas (infixa -> posfixa) 
94 
 
 
 
 
 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
Pilhas (infixa -> posfixa) 
95 
 
 
 
 
 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
Posfixa: 3 
Pilhas (infixa -> posfixa) 
96 
 
 
− 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 3 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
17 
Pilhas (infixa -> posfixa) 
97 
 
 
− 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 3 1 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
Pilhas (infixa -> posfixa) 
98 
 
 
 
 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 3 1 − 
( : ignore 
0…9 : anexe à string+, -, *, /: empilhe 
) : desempilhe e anexe à string 
Pilhas (infixa -> posfixa) 
99 
 
 
+ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 3 1 − 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
Pilhas (infixa -> posfixa) 
100 
 
 
+ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 3 1 − 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
Pilhas (infixa -> posfixa) 
101 
 
 
+ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 3 1 − 2 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
Pilhas (infixa -> posfixa) 
102 
 
∗ 
+ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 3 1 − 2 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
18 
Pilhas (infixa -> posfixa) 
103 
 
∗ 
+ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 3 1 − 2 4 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
Pilhas (infixa -> posfixa) 
104 
 
 
+ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 3 1 − 2 4 ∗ 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
Pilhas (infixa -> posfixa) 
105 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 3 1 − 2 4 ∗ + 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
Pilhas (infixa -> posfixa) 
106 
 
 
/ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 3 1 − 2 4 ∗ + 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
Pilhas (infixa -> posfixa) 
107 
 
 
/ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 3 1 − 2 4 ∗ + 5 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
Pilhas (infixa -> posfixa) 
108 
 
 
 
 
 
 
 
 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 3 1 − 2 4 ∗ + 5 / 
( : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
) : desempilhe e anexe à string 
19 
Pilhas (infixa -> prefixa) 
109 
Infixa 
(((3 − 1) + (2 ∗ 4))/5) 
Prefixa 
/ + − 3 1 ∗ 2 4 5 
Pilhas (infixa -> prefixa) 
110 
 
 
 
 
 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
Pilhas (infixa -> prefixa) 
111 
 
 
 
 
 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
Pilhas (infixa -> prefixa) 
112 
 
 
 
 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
Pilhas (infixa -> prefixa) 
113 
 
 
/ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
Pilhas (infixa -> prefixa) 
114 
 
 
/ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
20 
Pilhas (infixa -> prefixa) 
115 
 
 
/ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
Pilhas (infixa -> prefixa) 
116 
 
 
/ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 4 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
Pilhas (infixa -> prefixa) 
117 
 
∗ 
/ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 4 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
Pilhas (infixa -> prefixa) 
118 
 
∗ 
/ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 4 2 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
Pilhas (infixa -> prefixa) 
119 
 
 
/ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 4 2 ∗ 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
Pilhas (infixa -> prefixa) 
120 
 
+ 
/ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 4 2 ∗ 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
21 
Pilhas (infixa -> prefixa) 
121 
 
+ 
/ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 4 2 ∗ 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
Pilhas (infixa -> prefixa) 
122 
 
+ 
/ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 4 2 ∗ 1 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
Pilhas (infixa -> prefixa) 
123 
− 
+ 
/ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 4 2 ∗ 1 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
Pilhas (infixa -> prefixa) 
124 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 4 2 ∗ 1 3 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
− 
+ 
/ 
Pilhas (infixa -> prefixa) 
125 
 
+ 
/ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 4 2 ∗ 1 3 − 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
Pilhas (infixa -> prefixa) 
126 
 
 
/ 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 4 2 ∗ 1 3 − + 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
22 
Pilhas (infixa -> prefixa) 
127 
 
 
 
 
 
 
 
 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: 5 4 2 ∗ 1 3 − + / 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
Pilhas (infixa -> prefixa) 
128 
 
 
 
 
 
 
 
 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
Prefixa: / + − 3 1 ∗ 2 4 5 
) : ignore 
0…9 : anexe à string 
+, -, *, /: empilhe 
( : desempilhe e anexe à string 
Pilhas (posfixa -> infixa) 
129 
Posfixa 
3 1 − 2 4 ∗ + 5 / 
Infixa 
(((3 − 1) + (2 ∗ 4))/5) 
Pilhas (posfixa -> infixa) 
130 
 
 
 
 
Posfixa: 3 1 − 2 4 ∗ + 5 / 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
empilhe '(' + desempilha + 
[𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 𝑏 + ')' 
Infixa: 
Pilhas (posfixa -> infixa) 
131 
 
 
 
3 
Posfixa: 3 1 − 2 4 ∗ + 5 / 
Infixa: 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
empilhe '(' + desempilha + 
[𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 𝑏 + ')' 
Pilhas (posfixa -> infixa) 
132 
 
 
1 
3 
Posfixa: 3 1 − 2 4 ∗ + 5 / 
Infixa: 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
empilhe '(' + desempilha + 
[𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 𝑏 + ')' 
23 
Pilhas (posfixa -> infixa) 
133 
 
 
 
3 − 1 
Posfixa: 3 1 − 2 4 ∗ + 5 / 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
empilhe '(' + desempilha + 
[𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 𝑏 + ')' 
Pilhas (posfixa -> infixa) 
134 
 
 
2 
3 − 1 
Posfixa: 3 1 − 2 4 ∗ + 5 / 
Infixa: 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
empilhe '(' + desempilha + 
[𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 𝑏 + ')' 
Pilhas (posfixa -> infixa) 
135 
 
4 
2 
3 − 1 
Posfixa: 3 1 − 2 4 ∗ + 5 / 
Infixa: 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha;empilhe '(' + desempilha + 
[𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 𝑏 + ')' 
Pilhas (posfixa -> infixa) 
136 
 
 
2 ∗ 4 
3 − 1 
Posfixa: 3 1 − 2 4 ∗ + 5 / 
Infixa: 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
empilhe '(' + desempilha + 
[𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 𝑏 + ')' 
Pilhas (posfixa -> infixa) 
137 
 
 
 
((3 − 1) + (2 ∗ 4)) 
Posfixa: 3 1 − 2 4 ∗ + 5 / 
Infixa: 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
empilhe '(' + desempilha + 
[𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 𝑏 + ')' 
Pilhas (posfixa -> infixa) 
138 
 
 
5 
((3 − 1) + (2 ∗ 4)) 
Posfixa: 3 1 − 2 4 ∗ + 5 / 
Infixa: 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
empilhe '(' + desempilha + 
[𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 𝑏 + ')' 
24 
Pilhas (posfixa -> infixa) 
139 
 
 
 
(((3 − 1) + (2 ∗ 4))/5) 
Posfixa: 3 1 − 2 4 ∗ + 5 / 
Infixa: 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
empilhe '(' + desempilha + 
[𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 𝑏 + ')' 
Pilhas (posfixa -> infixa) 
140 
 
 
 
 
 
Posfixa: 3 1 − 2 4 ∗ + 5 / 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
empilhe '(' + desempilha + 
[𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 𝑏 + ')' 
Pilhas (prefixa -> infixa) 
141 
Prefixa 
/ + − 3 1 ∗ 2 4 5 
Infixa 
(((3 − 1) + (2 ∗ 4))/5) 
Pilhas (prefixa -> infixa) 
142 
 
 
 
 
Prefixa: / + − 3 1 ∗ 2 4 5 
0…9 : empilhe 
+, -, *, /: empilhe '(' + 
desempilha + [𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 
desempilha + ')' 
Infixa: 
Pilhas (prefixa -> infixa) 
143 
 
 
 
5 
Prefixa: / + − 3 1 ∗ 2 4 5 
Infixa: 
0…9 : empilhe 
+, -, *, /: empilhe '(' + 
desempilha + [𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 
desempilha + ')' 
Pilhas (prefixa -> infixa) 
144 
 
 
4 
5 
Prefixa: / + − 3 1 ∗ 2 4 5 
Infixa: 
0…9 : empilhe 
+, -, *, /: empilhe '(' + 
desempilha + [𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 
desempilha + ')' 
25 
Pilhas (prefixa -> infixa) 
145 
 
2 
4 
5 
Prefixa: / + − 3 1 ∗ 2 4 5 
Infixa: 
0…9 : empilhe 
+, -, *, /: empilhe '(' + 
desempilha + [𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 
desempilha + ')' 
Pilhas (prefixa -> infixa) 
146 
 
 
(2 ∗ 4) 
5 
Prefixa: / + − 3 1 ∗ 2 4 5 
Infixa: 
0…9 : empilhe 
+, -, *, /: empilhe '(' + 
desempilha + [𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 
desempilha + ')' 
Pilhas (prefixa -> infixa) 
147 
 
1 
(2 ∗ 4) 
5 
Prefixa: / + − 3 1 ∗ 2 4 5 
Infixa: 
0…9 : empilhe 
+, -, *, /: empilhe '(' + 
desempilha + [𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 
desempilha + ')' 
Pilhas (prefixa -> infixa) 
148 
3 
1 
(2 ∗ 4) 
5 
Prefixa: / + − 3 1 ∗ 2 4 5 
Infixa: 
0…9 : empilhe 
+, -, *, /: empilhe '(' + 
desempilha + [𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 
desempilha + ')' 
Pilhas (prefixa -> infixa) 
149 
 
(3 − 1) 
(2 ∗ 4) 
5 
Prefixa: / + − 3 1 ∗ 2 4 5 
Infixa: 
0…9 : empilhe 
+, -, *, /: empilhe '(' + 
desempilha + [𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 
desempilha + ')' 
Pilhas (prefixa -> infixa) 
150 
 
 
((3 − 1) + (2 ∗ 4)) 
5 
Prefixa: / + − 3 1 ∗ 2 4 5 
Infixa: 
0…9 : empilhe 
+, -, *, /: empilhe '(' + 
desempilha + [𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 
desempilha + ')' 
26 
Pilhas (prefixa -> infixa) 
151 
 
 
 
(((3 − 1) + (2 ∗ 4))/5) 
Prefixa: / + − 3 1 ∗ 2 4 5 
Infixa: 
0…9 : empilhe 
+, -, *, /: empilhe '(' + 
desempilha + [𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 
desempilha + ')' 
Pilhas (prefixa -> infixa) 
152 
Prefixa: / + − 3 1 ∗ 2 4 5 
Infixa: (((3 − 1) + (2 ∗ 4))/5) 
0…9 : empilhe 
+, -, *, /: empilhe '(' + 
desempilha + [𝑜𝑝𝑒𝑟𝑎𝑑𝑜𝑟] + 
desempilha + ')' 
153 
AVALIAÇÃO DE EXPRESSÃO 
POSFIXA 
 
3 1 − 2 4 ∗ + 5 / 
Pilhas (avaliação posfixa) 
154 
posfixa: 3 1 − 2 4 ∗ + 5 / 
Resultado: 
 
 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
 empilhe( 
 desempilha [𝑜𝑝𝑒𝑟𝑎çã𝑜] 𝑏) 
 
Pilhas (avaliação posfixa) 
155 
posfixa: 3 1 − 2 4 ∗ + 5 / 
Resultado: 
 
3 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
 empilhe( 
 desempilha [𝑜𝑝𝑒𝑟𝑎çã𝑜] 𝑏) 
 
Pilhas (avaliação posfixa) 
156 
posfixa: 3 1 − 2 4 ∗ + 5 / 
Resultado: 
1 
3 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
 empilhe( 
 desempilha [𝑜𝑝𝑒𝑟𝑎çã𝑜] 𝑏) 
 
27 
Pilhas (avaliação posfixa) 
157 
posfixa: 3 1 − 2 4 ∗ + 5 / 
Resultado: 
 
2 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
 empilhe( 
 desempilha [𝑜𝑝𝑒𝑟𝑎çã𝑜] 𝑏) 
 
Pilhas (avaliação posfixa) 
158 
posfixa: 3 1 − 2 4 ∗ + 5 / 
Resultado: 
2 
2 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
 empilhe( 
 desempilha [𝑜𝑝𝑒𝑟𝑎çã𝑜] 𝑏) 
 
Pilhas (avaliação posfixa) 
159 
posfixa: 3 1 − 2 4 ∗ + 5 / 
Resultado: 4 
2 
2 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
 empilhe( 
 desempilha [𝑜𝑝𝑒𝑟𝑎çã𝑜] 𝑏) 
 
Pilhas (avaliação posfixa) 
160 
posfixa: 3 1 − 2 4 ∗ + 5 / 
Resultado: 
8 
2 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
 empilhe( 
 desempilha [𝑜𝑝𝑒𝑟𝑎çã𝑜] 𝑏) 
 
Pilhas (avaliação posfixa) 
161 
posfixa: 3 1 − 2 4 ∗ + 5 / 
Resultado: 
 
10 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
 empilhe( 
 desempilha [𝑜𝑝𝑒𝑟𝑎çã𝑜] 𝑏) 
 
Pilhas (avaliação posfixa) 
162 
posfixa: 3 1 − 2 4 ∗ + 5 / 
Resultado: 
5 
10 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
 empilhe( 
 desempilha [𝑜𝑝𝑒𝑟𝑎çã𝑜] 𝑏) 
 
28 
Pilhas (avaliação posfixa) 
163 
posfixa: 3 1 − 2 4 ∗ + 5 / 
Resultado: 
 
2 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
 empilhe( 
 desempilha [𝑜𝑝𝑒𝑟𝑎çã𝑜] 𝑏) 
 
Pilhas (avaliação posfixa) 
164 
posfixa: 3 1 − 2 4 ∗ + 5 / 
Resultado: 2 
0…9 : empilhe 
+, -, *, /: 𝑏 recebe desempilha; 
 empilhe( 
 desempilha [𝑜𝑝𝑒𝑟𝑎çã𝑜] 𝑏) 
 
 
 
 
165 
AVALIAÇÃO DE EXPRESSÃO 
PREFIXA 
 
/ + − 3 1 ∗ 2 4 5 
Pilhas (avaliação prefixa) 
166 
prefixa: / + − 3 1 ∗ 2 4 5 
Resultado: 
 
 
0…9 : empilhe 
+, -, *, /: empilhe(desempilha 
 [𝑜𝑝𝑒𝑟𝑎çã𝑜] desempilha) 
 
Pilhas (avaliação prefixa) 
167 
prefixa: / + − 3 1 ∗ 2 4 5 
Resultado: 
0…9 : empilhe 
+, -, *, /: empilhe(desempilha 
 [𝑜𝑝𝑒𝑟𝑎çã𝑜] desempilha) 
 
 
 
 
5 
Pilhas (avaliação prefixa) 
168 
prefixa: / + − 3 1 ∗ 2 4 5 
Resultado: 
0…9 : empilhe 
+, -, *, /: empilhe(desempilha 
 [𝑜𝑝𝑒𝑟𝑎çã𝑜] desempilha) 
 
 
 
4 
5 
29 
Pilhas (avaliação prefixa) 
169 
prefixa: / + − 3 1 ∗ 2 4 5 
Resultado: 
0…9 : empilhe 
+, -, *, /: empilhe(desempilha 
 [𝑜𝑝𝑒𝑟𝑎çã𝑜] desempilha) 
 
 
2 
4 
5 
Pilhas (avaliação prefixa) 
170 
prefixa: / + − 3 1 ∗ 2 4 5 
Resultado: 
0…9 : empilhe 
+, -, *, /: empilhe(desempilha 
 [𝑜𝑝𝑒𝑟𝑎çã𝑜] desempilha) 
 
 
 
8 
5 
Pilhas (avaliação prefixa) 
171 
prefixa: / + − 3 1 ∗ 2 4 5 
Resultado: 
0…9 : empilhe 
+, -, *, /: empilhe(desempilha 
 [𝑜𝑝𝑒𝑟𝑎çã𝑜] desempilha) 
 
 
1 
8 
5 
Pilhas (avaliação prefixa) 
172 
prefixa: / + − 3 1 ∗ 2 4 5 
Resultado: 
0…9 : empilhe 
+, -, *, /: empilhe(desempilha 
 [𝑜𝑝𝑒𝑟𝑎çã𝑜] desempilha) 
 
3 
1 
8 
5 
Pilhas (avaliação prefixa) 
173 
prefixa: / + − 3 1 ∗ 2 4 5 
Resultado: 
0…9 : empilhe 
+, -, *, /: empilhe(desempilha 
 [𝑜𝑝𝑒𝑟𝑎çã𝑜] desempilha) 
 
 
2 
8 
5 
Pilhas (avaliação prefixa) 
174 
prefixa:/ + − 3 1 ∗ 2 4 5 
Resultado: 
0…9 : empilhe 
+, -, *, /: empilhe(desempilha 
 [𝑜𝑝𝑒𝑟𝑎çã𝑜] desempilha) 
 
 
 
10 
5 
30 
Pilhas (avaliação prefixa) 
175 
prefixa: / + − 3 1 ∗ 2 4 5 
Resultado: 
0…9 : empilhe 
+, -, *, /: empilhe(desempilha 
 [𝑜𝑝𝑒𝑟𝑎çã𝑜] desempilha) 
 
 
 
 
2 
Pilhas (avaliação prefixa) 
176 
prefixa: / + − 3 1 ∗ 2 4 5 
Resultado: 2 
0…9 : empilhe 
+, -, *, /: empilhe(desempilha 
 [𝑜𝑝𝑒𝑟𝑎çã𝑜] desempilha)

Outros materiais