基於陣列棧的實現
阿新 • • 發佈:2018-12-23
//基於陣列的棧實現
# ifndef ARRAY_STACK_HPP
# define ARRAY_STACK_HPP
template<typename T>
class ArrayStack
{
public:
ArrayStack(int s = 10); //預設的棧容量為10
~ArrayStack();
public:
T top(); //獲取棧頂元素
void push(T t); //壓棧操作
T pop(); //彈棧操作
bool isEmpty(); //判空操作
int size(); //求棧的大小
private:
int count; //棧的元素數量
int capacity; //棧的容量
T * array; //底層為陣列
};
/*建構函式*/
template <typename T>
ArrayStack<T>::ArrayStack(int s = 10)
:count(0), capacity(s), array(nullptr)
{
array = new T[capacity];
};
/*解構函式*/
template <typename T>
ArrayStack<T>::~ArrayStack()
{
if (array)
{
delete[]array;
array = nullptr;
}
};
/*棧的判空操作*/
template <typename T>
bool ArrayStack<T>::isEmpty()
{
return count == 0; //棧元素為0時為棧空
};
/*返回棧的大小*/
template <typename T>
int ArrayStack<T>::size()
{
return count;
};
/*插入元素*/
template <typename T>
void ArrayStack<T>::push(T t)
{
if (count != capacity) //先判斷是否棧滿
{
array[count++] = t;
}
};
/*彈棧*/
template <typename T>
T ArrayStack<T>::pop()
{
if (count != 0) //先判斷是否是空棧
{
return array[--count];
}
};
/*獲取棧頂元素*/
template <typename T>
T ArrayStack<T>::top()
{
if (count != 0)
{
return array[count - 1];
}
};
# endif