-
Notifications
You must be signed in to change notification settings - Fork 266
/
DynamicStack.c
82 lines (66 loc) · 1.32 KB
/
DynamicStack.c
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
/*
* Pilha Dinâmica utilizando uma Lista Ligada em C
*/
#include <malloc.h>
#include <stdio.h>
#define ERRO -1
typedef int TIPOCHAVE;
typedef struct AUX {
TIPOCHAVE chave;
struct AUX *prox;
} *PILHA;
PILHA CREATE(TIPOCHAVE ch) {
PILHA novaPilha = (PILHA)malloc(sizeof(PILHA));
novaPilha->chave = ch;
novaPilha->prox = NULL;
return novaPilha;
}
PILHA PUSH(TIPOCHAVE ch, PILHA pi) {
/*while( pi->prox != NULL ){
pi = pi->prox;
}*/
PILHA novo = CREATE(ch);
// pi->prox = novo;
novo->prox = pi;
return novo;
}
PILHA POP(PILHA pi) {
PILHA sub = pi->prox;
free(pi);
return sub;
}
void SHOW(PILHA pi) {
printf("PILHA:\n");
while (pi->prox != NULL) {
printf("[ %d ]\n", pi->chave);
pi = pi->prox;
}
printf("[ %d ]\n", pi->chave);
}
bool SEARCH(TIPOCHAVE ch, PILHA pi) {
bool vAchou = false;
while (pi != NULL) {
if (pi->chave == ch)
vAchou = true;
pi = pi->prox;
}
return vAchou;
}
int main() {
PILHA vPilha;
vPilha = PUSH(1, vPilha);
vPilha = PUSH(2, vPilha);
vPilha = PUSH(3, vPilha);
vPilha = PUSH(4, vPilha);
vPilha = PUSH(5, vPilha);
vPilha = PUSH(6, vPilha);
SHOW(vPilha);
vPilha = POP(vPilha);
vPilha = POP(vPilha);
SHOW(vPilha);
if (SEARCH(6, vPilha))
printf("\nAchou\n");
else
printf("\nNão achou\n");
return 0;
}