-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPilha.c
60 lines (51 loc) · 1.29 KB
/
Pilha.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
#include "Pilha.h"
void alocarPilha(Pilha** pilha){
*pilha = (Pilha*)malloc(sizeof(Pilha));
(*pilha)->tamanho = 0;
(*pilha)->proxPosicao = NULL;
}
void liberarPilha(Pilha* pilha){
if(pilha!=NULL){
free(pilha);
}
}
int pilhaVazia(Pilha** pilha){
if(pilha == NULL)
return 1;
if(*pilha == NULL)
return 1;
return 0;
}
int inserirPilha(Pilha** pilha, int linha, int coluna){
if(pilha == NULL)
return 0;
Pilha* no = (Pilha*)malloc(sizeof(Pilha));
if(no == NULL)
return 0;
no->posicaoMatriz.coluna = coluna;
no->posicaoMatriz.linha = linha;
no->proxPosicao = (*pilha);
no->tamanho = (*pilha)->tamanho;
*pilha = no;
(*pilha)->tamanho ++;
return 1;
}
int removerPilha(Pilha** pilha){
if(pilhaVazia(&(*pilha))){
return 0;
}
Pilha* no = (*pilha);
(*pilha) = no->proxPosicao;
free(no);
return 1;
}
void mostrarPilha(Pilha* pilha){
Pilha *no = pilha->proxPosicao;
printf("Linha: %d Coluna: %d\n", pilha->posicaoMatriz.linha, pilha->posicaoMatriz.coluna);
while (no != NULL) {
if(no->posicaoMatriz.linha != 0){
printf("Linha: %d Coluna: %d\n", no->posicaoMatriz.linha, no->posicaoMatriz.coluna);
}
no = no->proxPosicao;
}
}