文章目录
1.栈的特点
先进后出
2.栈的种类
顺序栈(数组实现)和链式栈(链表实现),双栈没有特别了解
3.栈的类定义
const int maxSize=50;
enum bool{false,true};
template<class T>
class Stack{
public:
Stack(){};
virtual void Push(const T& x)=0;
virtual bool Pop(T& x)=0;
virtual bool getTop(T& x)=0;//使用& x是将函数中的x的变化带回。
virtual bool IsEmpty() const = 0;
virtual bool IsFull() const=0;//常成员函数,不得修改类中的任何数据成员的值
virtual int getSize() const=0;//计算栈中的元素个数
};
3.1 顺序栈的类定义
#include<assert.h> //断言。满足断言中参数的条件则继续执行,不满足则终止程序的执行
#include<iostream.h>
#include "Stack.h"
const int stackIncreament=20;//栈溢出扩展空间增量
template<class T>
class SeqStack: public Stack<T>{
public:
SeqStack(int sz=50);
~SeqStack(){delete[] elements;}
void Push(const T& x);
bool Pop(T& x);
bool getTop(T& x);
bool IsEmpty()const {return (top==-1)?true:false}
bool IsFull()const {return (top=maxSize-1)?true:false}
int getSize()const {return top+1;}
void MakeEmpty(){top=-1;}
friend ostream& ope