-
Notifications
You must be signed in to change notification settings - Fork 0
/
pila.h
70 lines (53 loc) · 2.49 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
#ifndef _PILA_H
#define _PILA_H
#include <stdbool.h>
/* *****************************************************************
* DEFINICION DE LOS TIPOS DE DATOS
* *****************************************************************/
/* Se trata de una pila que contiene datos de tipo void*
* (punteros genéricos). La pila en sí está definida en el .c. */
struct pila; // Definición completa en pila.c.
typedef struct pila pila_t;
/* *****************************************************************
* PRIMITIVAS DE LA PILA
* *****************************************************************/
// Crea una pila.
// Post: devuelve una nueva pila vacía.
pila_t *pila_crear(void);
// Destruye la pila.
// Pre: la pila fue creada.
// Post: se eliminaron todos los elementos de la pila.
void pila_destruir(pila_t *pila);
// Devuelve verdadero si la pila no tiene elementos apilados, false en caso contrario.
// Pre: la pila fue creada.
bool pila_esta_vacia(const pila_t *pila);
// Agrega un nuevo elemento a la pila. Devuelve falso en caso de error.
// Pre: la pila fue creada.
// Post: se agregó un nuevo elemento a la pila, valor es el nuevo tope.
bool pila_apilar(pila_t *pila, void *valor);
// Obtiene el valor del tope de la pila. Si la pila tiene elementos,
// se devuelve el valor del tope. Si está vacía devuelve NULL.
// Pre: la pila fue creada.
// Post: se devolvió el valor del tope de la pila, cuando la pila no está
// vacía, NULL en caso contrario.
void *pila_ver_tope(const pila_t *pila);
// Saca el elemento tope de la pila. Si la pila tiene elementos, se quita el
// tope de la pila, y se devuelve ese valor. Si la pila está vacía, devuelve
// NULL.
// Pre: la pila fue creada.
// Post: si la pila no estaba vacía, se devuelve el valor del tope anterior
// y la pila contiene un elemento menos.
void *pila_desapilar(pila_t *pila);
/* *****************************************************************
* PRUEBAS PARA LA PILA
* *****************************************************************/
// Realiza pruebas sobre la implementación realizada.
//
// Las pruebas deben emplazarse en el archivo ‘pruebas_pila.c’, y
// solamente pueden emplear la interfaz pública tal y como aparece en pila.h
// (esto es, las pruebas no pueden acceder a los miembros del struct pila).
//
// Para la implementación de las pruebas se debe emplear la función
// print_test(), como se ha visto en TPs anteriores.
void pruebas_pila_estudiante(void);
#endif // _PILA_H