emplate<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; //底层为数组
};
- count 为栈的元素数量,capacity为栈的容量,count<=capacity,当栈满的时候,count = capacity。
- 本实现中不支持栈的动态扩容,栈满的时候无法再插入元素。栈的容量在定义栈的时候就需要指定,默认的栈容量为10。
/*栈的判空操作*/ 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]; } };
c#
Pop :弹出栈顶元素并删除push :压入栈顶元素
peek:弹出栈顶元素不删除
ToArray:方法创建数组并将堆栈元素复制到其中
Contains:方法判断一个元素是否在栈中