-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfuncionesPilaEnt.hpp
66 lines (55 loc) · 2.69 KB
/
funcionesPilaEnt.hpp
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
// Fichero de interfaz funcionesPilaEnt.hpp del módulo de biblioteca funcionesPilaEnt
# pragma once
# include <iostream>
# include <iomanip>
// Tipo PilaEnt y operaciones básicas para el trabajo con pilas de datos
# include "../funciones/pilaEnt.hpp"
// * Notación empleada en las especificaciones:
// p = [] La pila p está vacáa, es decir, almacena 0 datos
// p = [D_1, D_2, ..., D_K] la pila p almacena K datos. El más antiguo
// es el dato D_1, el segundo más antiguo el dato D_2, etc., etc.,
// y el más reciente es el dato D_K
// * Pre: p = [D_1, D_2, ..., D_K] AND K >= 0
// * Post: p = [D_1, D_2, ..., D_K] AND numDatos(p) = K
int numDatos(PilaEnt &p);
// Pre: p = [D_1, D_2, ..., D_K] AND K >= 0 AND anchura >= 1
// Post: p = [D_1, D_2, ..., D_K] y presenta por pantalla un listado de
// los datos apilados en la pila comenzando por la cima, D_K, y acabando
// por el del fondo de la pila, D_1. Cada dato lo escribe en una lánea,
// empleando anchura caracteres y alineado a la derecha. Cada dato es
// precedido por el carácter '|' y es seguido por los caracteres ' ' y
// '|', tal como se ilustra a continuación. Tras el último dato se
// presenta una linea de la forma "+--...--+", seguida por una lánea
// en blanco:
//
// | D_K |
// | ... |
// | D_2 |
// | D_1 |
// +---------+
void mostrar(PilaEnt &p, const int anchura=3);
// Pre: p = [D_1, D_2, ..., D_K] AND K >= 0 AND anchura >= 1
// Post: p = [D_1, D_2, ..., D_K] y presenta por pantalla un listado de los
// datos apilados en la pila comenzando por el del fondo de la pila, D_1,
// y acabando por el de la cima de la pila, D_1. Cada dato lo escribe
// en una lánea, empleando anchura caracteres y alineado a la derecha.
// Cada dato es precedido por el carácter '|' y es seguido por los
// caracteres ' ' y '|', tal como se ilustra a continuación. Antes
// del primer dato se presenta una linea de la forma "+--...--+":
//
// +---------+
// | D_1 |
// | D_2 |
// | ... |
// | D_K |
void mostrarInvertida(PilaEnt &p, const int anchura=3);
// * Pre: p = [D_1, D_2, ..., D_K] AND K >= 0
// * Post: p = [D_2, ..., D_K]
void eliminarFondo(PilaEnt &p);
// * Pre: p = [D_K, ..., D_(i+1), D_i, D_(i-1), ..., D_1] AND
// * K >= 0 AND i >= 1 AND i <= K
// * Post: p = [D_K, ..., D_(i+1), D_(i-1), ..., D_1]
void eliminar(PilaEnt &p, const int i);
// * Pre: p = [D_1, D_2, ..., D_K] AND K >= 0
// * Post: p = [nuevo, D_1, D_2, ..., D_K]
void insertarEnFondo(PilaEnt &pila, const int nuevo);