栈类模板实现含界面

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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::seqstack()

{

stackspace=NULL;

stacksize=0;

top=-1;

}

//创建一个空栈

template

seqstack::seqstack(int size)

{

stackspace=NULL;

stacksize=0;

top=-1;

create(size);

}

//栈的析构函数

template

seqstack::~seqstack()

{

destroy();

}

//实际栈的创建函数

template

bool 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;

}

//销毁栈的函数

template

void seqstack::destroy()

{

if(stackspace)

delete []stackspace;

stackspace=NULL;

top=-1;

stacksize=0;

}

//判断栈是否为空

template

bool seqstack::isempty() const

{

if(!stackspace)

return true;

return top>=0?false:true;

}

//判断栈是否已满

template

bool seqstack::isfull() const

{

if(!stacksize) //确定栈是否被创建,没有创建是为已满 return true;

return top==stacksize-1?true:false;

}

//进栈函数

template

bool seqstack::push(Type &item)

{

if(!stackspace)

return false;

if(isfull())

return false;

stackspace[++top]=item;

return true;

}

//出栈函数,不返回栈顶元素

template

bool seqstack::pop()

{

if(empty())

return flase;

top--;

return ture;

}

//出栈函数,但返回栈顶元素

template

bool seqstack::pop(Type &item)

{

if(isempty()) //判断栈是否为空

return false;

item=stackspace[top--];

return true;

}

//得到栈顶数据元素

template

bool seqstack::gettop(Type &item)

{

if(isempty())

return false;

item=stackspace[top];

return true;

}

相关文档
最新文档