《C++程序设计》实验报告
姓名:庹磊学院:计算机智能科学类班级:0401310学号:2013211732时间:2014-2015(2)指导教师:冯潇
1题目:(类模板的使用)实现栈数据结构,功能可以包括入栈、出栈、清空栈等动作。
2思路:堆栈的定义设计template class seqstack{public: seqstack(); //创建一个空栈 seqstack(int size); //创建一个可以容纳size个元素的栈 ~seqstack(); //析构函数 bool create(int size); //实际创建一个可以容纳size个元素的栈 void destroy(); //栈的销毁 bool isempty() const; //确定栈是否为空 bool isfull() const; //确定栈是否已满 bool push(Type &item); //数据进栈 bool pop(); //数据出栈 bool pop(Type &item); //数据出栈,并返回出栈前的栈顶数据 bool gettop(Type &item); //显示当前栈顶元素 void display(); //显示所有数据元素private: Type *stackspace; //指向栈的指针 int stacksize; //栈的大小,当为0时,表示栈没有创建空间 int top; //top栈顶位置,当为-1时,栈为空};功能实现代码//栈的初始化template //此语句关键,需注意seqstack::seqstack() { stackspace=NULL; stacksize=0; top=-1;}//创建一个空栈templateseqstack::seqstack(int size){ stackspace=NULL; stacksize=0; top=-1; create(size);}//栈的析构函数templateseqstack::~seqstack(){ destroy();}//实际栈的创建函数templatebool seqstack::create(int size){ if(stacksize) //栈已经创建,不能继续创建 return false; if(size<=0) //size的值必须大于0 return false; stackspace=new Type[size]; if(!stackspace) //没有申请到存储空间(栈已满) return false; stacksize=size; top=-1; return true;}//销毁栈的函数templatevoid seqstack::destroy(){ if(stackspace) delete []stackspace; stackspace=NULL; top=-1; stacksize=0;}//判断栈是否为空templatebool seqstack::isempty() const{ if(!stackspace) return true; return top>=0?false:true;}//判断栈是否已满templatebool seqstack::isfull() const{ if(!stacksize) //确定栈是否被创建,没有创建是为已满 return true; return top==stacksize-1?true:false;}//进栈函数templatebool seqstack::push(Type &item){ if(!stackspace) return false; if(isfull()) return false; stackspace[++top]=item; return true;}//出栈函数,不返回栈顶元素templatebool seqstack::pop(){ if(empty()) return flase