-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstack.c
More file actions
65 lines (55 loc) · 1.09 KB
/
stack.c
File metadata and controls
65 lines (55 loc) · 1.09 KB
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
#include "stack.h"
typedef struct stack{
list *list;
} stack;
/**
* Cria uma nova pilha na memória.
*/
stack *stack_create(void){
stack* result = malloc(sizeof(stack));
result->list = list_create();
return result;
}
/**
* Limpa a memória de uma pilha.
*/
void stack_delete(stack *stack){
list_delete(stack->list);
free(stack);
}
/**
* Adiciona um item no topo da pilha.
*/
void stack_push(stack *stack, int value){
list_push_front(stack->list, value);
}
/**
* Remove um item do fim da pilha.
* Retorna zero se a pilha estiver vazia.
*/
int stack_pop(stack *stack){
return list_pop_front(stack->list);
}
/**
* Retorna o item no topo da pilha, sem remover ele.
*/
int stack_peek(stack *stack){
// int top = stack_pop(stack);
// stack_push(stack, top);
return list_peek_last(stack->list);
}
/**
* Retorna o tamanho de uma pilha.
*/
int stack_size(stack *stack){
return list_size(stack->list);
}
/**
* Verifica se uma pilha está vazia.
*/
int stack_empty(stack *stack){
if (list_size(stack->list)==0){
return 1;
}
return 0;
}