Categorías
Otros

2.c ++ para lograr una pila simple

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*_dataAlmacenamiento de datos._sizeIndica el tamaño total de la pila.
  • Subíndice de matriz_topRegistre la posición actual (el subíndice del puntero superior).
  • Cuando no hay datos en la matriz,_topA -1.
  • Directamente_topReducir 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_topAgregue 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;
}

.

  Cómo escribir un artículo de MBA - que involucra el modelado matlab

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *