栈有两种实现方法,其一是基于数组的栈,其二是基于链表的栈,下面是我学习到一些栈的相关操作模板(基于数组):
class ArrayStack{public: ArrayStack(int s = 10); /*初始化栈容量*/ ~ArrayStack(); public: int top(); /*栈顶*/ void push(int t); /*进栈*/ int pop(); /*出栈*/ bool isEmpty(); /*判空*/ int size(); /*栈大小*/ private: int count; /*栈元素数量*/ int capacity; /*栈容量*/ int * array; /*底部数组*/};int ArrayStack::top() /*栈顶*/{ if (count != 0) { return array[count - 1]; }};void ArrayStack::push(int t) /*进栈*/{ if (count != capacity) /*是否栈满*/ { array[count++] = t; }};int ArrayStack::pop() /*出栈*/{ if (count != 0) /*是否栈空*/ { return array[--count]; }};bool ArrayStack::isEmpty() /*栈空*/{ return count == 0; };int ArrayStack::size() /*栈大小*/{ return count;};
这种栈只能输入int型数据,如果想要输入其它类型,可以用函数模板的知识,如:
templateclass ArrayStack{public: ArrayStack(int s = 10); /*初始化栈容量*/ ~ArrayStack(); public: T top(); /*栈顶*/ void push(T t); /*进栈*/ T pop(); /*出栈*/ bool isEmpty(); /*判空*/ int size(); /*栈大小*/ private: int count; /*栈元素数量*/ int capacity; /*栈容量*/ T * array; /*底部数组*/};
其它函数的定义加上虚拟类型参数即可。