- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《C++程序设计》实验报告
姓名:庹磊
学院:计算机智能
学号:2013211732
时间:2014-2015(2)
指导教师:冯潇
1题目:(类模板的使用)实现栈数据结构,功能可以包括入栈、出栈、清空栈等动作。
2思路:堆栈的定义设计
template class Type
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时,栈为空
};
功能实现代码
//栈的初始化
templateclass Type //此语句关键,需注意
seqstackType::seqstack()
{
stackspace=NULL;
stacksize=0;
top=-1;
}
//创建一个空栈
templateclass Type
seqstackType::seqstack(int size)
{
stackspace=NULL;
stacksize=0;
top=-1;
create(size);
}
//栈的析构函数
templateclass Type
seqstackType::~seqstack()
{
destroy();
}
//实际栈的创建函数
templateclass Type
bool seqstackType::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;
}
//销毁栈的函数
templateclass Type
void seqstackType::destroy()
{
if(stackspace)
delete []stackspace;
stackspace=NULL;
top=-1;
stacksize=0;
}
//判断栈是否为空
templateclass Type
bool seqstackType::isempty() const
{
if(!stackspace)
return true;
return top=0?false:true;
}
//判断栈是否已满
templateclass Type
bool seqstackType::isfull() const
{
if(!stacksize) //确定栈是否被创建,没有创建是为已满
return true;
return top==stacksize-1?true:false;
}
//进栈函数
templateclass Type
bool seqstackType::push(Type item)
{
if(!stackspace)
return false;
if(isfull())
return false;
stackspace[++top]=item;
return true;
}
//出栈函数,不返回栈顶元素
templateclass Type
bool seqstackType::pop()
{
if(empty())
return flase;
top--;
return ture;
}
//出栈函数,但返回栈
文档评论(0)