栈类模板实现含界面
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C++程序设计》实验报告
姓名:庹磊
学院:计算机智能科学类
班级:0401310
学号:**********
时间: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
{
stackspace=NULL;
stacksize=0;
top=-1;
}
//创建一个空栈
template
seqstack
{
stackspace=NULL;
stacksize=0;
top=-1;
create(size);
}
//栈的析构函数
template
seqstack
{
destroy();
}
//实际栈的创建函数
template
bool seqstack
{
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;
}
//销毁栈的函数
template
void seqstack
{
if(stackspace)
delete []stackspace;
stackspace=NULL;
top=-1;
stacksize=0;
}
//判断栈是否为空
template
bool seqstack
{
if(!stackspace)
return true;
return top>=0?false:true;
}
//判断栈是否已满
template
bool seqstack
{
if(!stacksize) //确定栈是否被创建,没有创建是为已满 return true;
return top==stacksize-1?true:false;
}
//进栈函数
template
bool seqstack
{
if(!stackspace)
return false;
if(isfull())
return false;
stackspace[++top]=item;
return true;
}
//出栈函数,不返回栈顶元素
template
bool seqstack
{
if(empty())
return flase;
top--;
return ture;
}
//出栈函数,但返回栈顶元素
template
bool seqstack
{
if(isempty()) //判断栈是否为空
return false;
item=stackspace[top--];
return true;
}
//得到栈顶数据元素
template
bool seqstack
{
if(isempty())
return false;
item=stackspace[top];
return true;
}