-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcalculadora-polonesa.h
71 lines (58 loc) · 2.99 KB
/
calculadora-polonesa.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#ifndef _CALCULADORA-POLONESA_H
#define _CALCULADORA-POLONESA_H
/* ------------------------------------------------------------------------- */
/* includes */
#include <stdio.h> /* Standard I/O functions */
#include <stdlib.h> /* Miscellaneous functions (rand, malloc, srand)*/
/* ------------------------------------------------------------------------- */
/* definitions */
#define SBUFF 256 /**< String buffer */
#define NUM 0 /* valor na pilha eh operando */
#define OPE 1 /* valor na pilha eh operador */
/* Organizacao:
*
* info_t:
* +-----------+
* | int val; |
* +---> +-----------+ +---> info_t
* | | int tipo; | |
* | +-----------+ |
* | |
* pilha_t: | pilha_t: |
* +----------------+ | +----------------+ |
* | info_t *info; |---+ | info_t *info; |---+
* base---> +----------------+ +---> +----------------+
* | pilha_t *prox; |--------+ | pilha_t *prox; |---> pilha_t ---> ...
* +----------------+ +----------------+
* |
* V
* topo
*/
/* informacao de cada nodo da pilha */
typedef struct info_pilha
{
int val; /* valor no nodo da pilha */
int tipo; /* Se tipo=NUM, val = numero; Se tipo=OPE, val = '+', '-', '*' ou '/' */
} info_t;
/* ponteiro para nodo da pilha contendo informacoes */
typedef struct nodo_pilha
{
info_t *info; /* estrutura contendo os dados do nodo */
struct nodo_pilha *prox; /* ponteiro para o proximo nodo */
} pilha_t;
/* ------------------------------------------------------------------------- */
/* prototypes */
void help(void); /**< Prints help information and exit */
void copyr(void); /**< Prints copyright information and exit */
void Caluladora_init(void); /**< Initializes some operations before start */
/* funcoes de pilha */
int empty(pilha_t *p); /* retorna verdadeiro se pilha vazia */
void push(pilha_t **p, info_t i); /* insere elemento val no topo */
info_t *pop(pilha_t **p); /* remove elemento do topo */
info_t *top(pilha_t *p); /* consulta elemento no topo, sem remove-lo */
int size(pilha_t *p); /* retorna o total de elementos na pilha */
void clean(pilha_t **p); /* limpa toda a memoria utilizada pela pilha */
void print(pilha_t *p); /* printa todos os elementos da pilha */
/* funcoes auxiliares */
int valida(char *s); /* valida a equacao retornando verdadeiro/falso */
#endif /* NOT def _CALCULADORA-POLONESA_H */