forked from kelvins/algorithms-and-data-structures
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DynamicStack.c
82 lines (66 loc) · 1.25 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 <stdio.h>
#include <malloc.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;
}