-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpilha_sequencial.cpp
114 lines (103 loc) · 2.4 KB
/
pilha_sequencial.cpp
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#define N 3
typedef struct pilha Pilha;
typedef enum{FALSE, TRUE} Bool;
Pilha* pilha_cria(void);
void pilha_push(Pilha* p, float v);
float pilha_pop(Pilha* p);
bool pilha_vazia(Pilha* p);
void pilha_libera(Pilha* p);
void pilha_imprime(Pilha* p);
struct pilha{
int n;
float vet[N];
};
int main() {
Pilha* p=NULL;
int op;
float x;
char resp;
do{
system("cls");
printf("\t --Implementando de Pilha Sequencial--\n\n");
printf("\t 1 - Para criar a pilha.\n");
printf("\t 2 - Para incrementar elementos na pilha.\n");
printf("\t 3 - Para remover elementos da pilha.\n");
printf("\t 4 - Para testar a pilha.\n");
printf("\t 5 - Para exibir a pilha.\n");
printf("\t 6 - Para sair.\n\n");
scanf("%d",&op);
switch (op) {
case 1:
p=pilha_cria();
printf("Pilha criada no endereço %p!",p);
break;
case 2:
printf("Digite um valor real:");
scanf("%f",&x);
pilha_push(p,x);
break;
case 3:
x=pilha_pop(p);
break;
case 4:{
if(pilha_vazia(p))
printf("Pilha esta vazia ou nao existe!");
else
printf("Pilha nao esta vazia!");
}
break;
case 5:
pilha_imprime(p);
break;
case 6:
exit(1);
}
printf("\nQuer continuar? (s/n)\n\n");
scanf("%s",&resp);
}while (resp=='s');
getch();
}
Pilha* pilha_cria (void){
Pilha* p=(Pilha*) malloc(sizeof(Pilha));
p->n=0;
return p;
}
void pilha_push(Pilha* p, float v){
if (p->n==N){
printf("Overflow na pilha !!!\n");
getch();
exit(1);
}
p->vet[p->n]=v ;
p->n++;
}
float pilha_pop(Pilha* p){
if (pilha_vazia(p)){
printf("Pilha Vazia\n");
exit(1);
}
p->vet[p->n]=0;
p->n--;
}
bool pilha_vazia(Pilha* p){
if (p!=NULL){
if(!p->n){
return TRUE;
}
else{
return FALSE;
}
}
else{
return TRUE;
}
}
void pilha_imprime(Pilha* p){
int i;
for(i=p->n-1;i>=0;i--){
printf("%f\n",p->vet[i]);
}
}