Ejercicio 2. Escriba una clase para lograr una pila simple
2. Escriba una clase para lograr una pila simple. Hay las siguientes operaciones en la pila:
> elemento en la pila VOID PUSH (Int);
> Salida de elementos Void Pop ();
> Lea el elemento superior INT TOP ();
> Pila de juicios Vacía BOOL EMTY ();
> Juzgar la pila de BOOL FULL ();
Si la pila se desborda, el programa finaliza. Se almacenan pilas de miembros de datos
Matriz de 10 datos enteros. Así que sigue:
> Pila de creación
> Will 10 en la pila
> Will 12 en la pila
> Will 14 en la pila
> Leer y generar los elementos superiores de la pila
> Fuera de la pila
> Leer y generar los elementos superiores de la pila
Idea de solución:
Pila: Avanzado.
- Necesita arreglo de discos
*_data
Almacenamiento de datos._size
Indica el tamaño total de la pila. - Subíndice de matriz
_top
Registre la posición actual (el subíndice del puntero superior). - Cuando no hay datos en la matriz,
_top
A -1. - Directamente
_top
Reducir uno, no tiene que preocuparse por la ubicación de la posición, la siguiente pila cubrirá los datos - Cuando se presiona la pila, la parte superior de la pila es
_top
Agregue uno y, a continuación, asigne los datos a la pila a la posición actual de la matriz.
Los miembros de datos necesitan:
El subíndice del puntero superiorint _top;
El tamaño total de la pilaint _size;
elemento en la pilaINT * _DATA; (array)
Condición:
pila está vacía-1 == _top
Pila_top == _size
Operativo:
Fábrica_data[++_top] = value;
fuera de la pila--top;
Obtener un elemento superior_data[_top]
#include <iostream>
using std::cout;
using std::endl;
class Stack
{
public:
// Constructor, the default stack size is 10, and the data can be input;
Stack(int size = 10)
:_top(-1)
,_size(size)
,_data(new int[size]())
{
cout << "Stack()" << endl;
}
/ / Decades if the stack is empty
bool empty()
{
return _top == -1;
}
/ / The judgment stack is full
bool full()
{
return (_top == _size - 1);
}
// stack
void push(const int &value)
{
if(!full())
{
_data[++_top] = value;
}
else
{
cout << "Stack is full, cannot add any data!" << endl;
}
}
// out of the stack
void pop()
{
if(!empty())
{
_top--;
}
else
{
cout << "Stack is empty, cannot pop any data!" << endl;
}
}
/ / Get the top elements of the stack
int gettop()
{
if(empty())
{
cout << "Stack is empty!" << endl;
}
return _data[_top];
}
// Destructor
~Stack()
{
cout << "~Stack()" << endl;
if(_data)
{
delete []_data;
_data = nullptr;
}
}
private:
int _top;
int _size;
int *_data;
};
int main()
{
Stack s1;
COUT << "The stack is empty:";
cout << s1.empty() << endl;
COUT << "The stack is full:";
cout << s1.full() << endl;
s1.push(10);
s1.push(12);
s1.push(14);
int temp = s1.gettop();
COUT << "The current stack top element is:" << Temp << endl;
s1.pop();
temp = s1.gettop();
COUT << "The current stack top element is:" << Temp << endl;
return 0;
}
.