(C++)栈和队列的模拟实现

什么是栈?

栈(stack)是限定仅在表尾进行插入和删除操作的线性表

我们把允许插入和删除的一端称为栈顶(Top),另一端称为栈底(bottom),不含任何数据原色的栈称为空栈。栈又称为后进先出(Last In First Out)的线性表,简称LIFO结构。

实现一个栈

代码实现:

template <class T>
class stack
{
public:
    stack()
        :_data(NULL)
        , _size(0)
        , _capacity(0)
    {}

    stack(const stack& s)
    {
        _data = new T[s._size];
        for (size_t i = 0; i < s._size; ++i)
        {
            _data[i] = s._data[i];
        }
        _size = s._size;
        _capacity = s._capacity;
    }

    ~stack()
    {
        if (_data)
        {
            delete[] _data;
            _data = NULL;
            _size = 0;
            _capacity = 0;
        }
    }

    void CheckCapacity()
    {
        if (_size == _capacity)
        {
            size_t _newCapacity = _capacity * 2 + 3;
            T* tmp = new T[_newCapacity];
            assert(tmp);
            for (size_t i = 0; i < _size; ++i)
            {
                tmp[i] = _data[i];
            }

            delete[] _data;
            _data = tmp;
            _capacity = _newCapacity;
        }
    }

    void Push(const T& x)
    {
        if (_size == _capacity)
        {
  

你可能感兴趣的:(C++,c++,栈和队列,线性表)