-
Notifications
You must be signed in to change notification settings - Fork 0
/
pila.h
72 lines (57 loc) · 1.52 KB
/
pila.h
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
#define TAMANIO_PILA 10000
typedef struct pilaEnteros {
int elementos[TAMANIO_PILA];
int cantidadElementosPila;
} pilaEnteros;
void pilaEmpujar(struct pilaEnteros * stack, int elemento) {
if(stack->cantidadElementosPila==TAMANIO_PILA) {
printf("Stack Overflow!");
exit(1);
}
stack->elementos[stack->cantidadElementosPila]=elemento;
stack->cantidadElementosPila++;
}
int pilaVacia (struct pilaEnteros * stack) {
if(stack->cantidadElementosPila==0) {
return 1;
}
else {
return 0;
}
}
void pilaExtraer(struct pilaEnteros * stack, int * elemento) {
//imprimirPila(stack);
if(pilaVacia(stack)) {
printf("Error! Se quiso extraer de una pila vacía\n");
exit(1);
}
*elemento=stack->elementos[stack->cantidadElementosPila-1];
stack->cantidadElementosPila--;
}
void colaExtraer(struct pilaEnteros * stack, int * elemento) {
if(pilaVacia(stack)) {
printf("Error! Se quiso extraer de una pila vacía\n");
exit(1);
}
*elemento=stack->elementos[0];
int j=0;
while(j<stack->cantidadElementosPila) {
printf("--- Elemento %d: %d\n",j,stack->elementos[j]);
j++;
}
int i=0;
while(i<stack->cantidadElementosPila-1) {
stack->elementos[i] = stack->elementos[i+1];
i++;
}
stack->cantidadElementosPila--;
}
void imprimirPila(struct pilaEnteros * stack) {
printf("\n===VOLCADO DE PILA=== \n");
int i=stack->cantidadElementosPila;
while(i>0) {
int elem = stack->elementos[i-1];
printf("Posicion %d: %d\n",i,elem);
i--;
}
}