1. 程式人生 > >基於陣列棧的實現

基於陣列棧的實現

//基於陣列的棧實現
# 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