-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPilha.c
39 lines (33 loc) · 897 Bytes
/
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
#include "includes.h"
void initPilha(TipoPilha* pilha)
{
pilha->tamanho = 0;
pilha->primeiro = allocN(TipoApontador, struct Apontador);
pilha->primeiro->anterior = NULL;
pilha->primeiro->proximo = NULL;
pilha->ultimo = pilha->primeiro;
}
int pilhaVazia(TipoPilha pilha)
{
return !pilha.tamanho;
}
void empilha(TipoPilha* pilha, TipoItemPilha ItemPilha)
{
TipoApontador* apontador = allocN(TipoApontador, struct Apontador);
apontador->ItemPilha = ItemPilha;
apontador->proximo = NULL;
apontador->anterior = pilha->ultimo;
pilha->ultimo->proximo = apontador;
pilha->ultimo = apontador;
pilha->tamanho++;
}
void desempilha(TipoPilha* pilha, TipoItemPilha *ItemPilha)
{
if(!pilhaVazia(*pilha))
{
*ItemPilha = pilha->ultimo->ItemPilha;
pilha->ultimo = pilha->ultimo->anterior;
pilha->ultimo->proximo = NULL;
pilha->tamanho--;
}
}