第--章━━堆栈队列结构优秀文档.ppt
上传人:天马****23 上传时间:2024-09-10 格式:PPT 页数:38 大小:222KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

第--章━━堆栈队列结构优秀文档.ppt

第--章━━堆栈队列结构优秀文档.ppt

预览

免费试读已结束,剩余 28 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

C++程序设计主要内容堆栈结构━━顺序栈、链栈堆栈结构━━顺序栈、链栈顺序栈类的设计━━采用面向对象程序设计顺序栈类的设计━━采用面向对象程序设计【例】(顺序栈类模板StackSeq的定义,以“stackseq.h”为文件名保存。)#include<>template<typenameT>classStackSeq//顺序栈类模板StackSeq的声明{inttop;//栈顶指针(对于顺序栈,栈顶位置就是栈顶元素的下标)T*elements;//栈空间首地址(对于顺序栈,栈空间是T类型的数组,开在动态存储区)intmax;//栈空间中最多容纳的元素个数(对于顺序栈,就是栈空间数组的长度)public:StackSeq(int=20);//构造函数(参数省略时,默认栈空间中最多容纳20个元素)~StackSeq();//析构函数(释放动态存储区的栈空间)voidpush(Td);//压栈(将d元素压入栈中,本操作top将改变)Tpop();//出栈(弹出栈顶元素并返回,本操作top将改变)Tget(intk);//读取并返回栈内第k号元素(元素编号为第0~top号,本操作top不变)intlength();//求出栈内元素的个数voidprint();//输出栈内所有元素(将第0~top号的元素依次输出,本操作top不变)voidempty();//清空栈(使栈内无任何元素,即空栈)boolisEmpty();//判断栈是否为空boolisFull();//判断栈是否已满};//构造函数template<typenameT>StackSeq<T>::StackSeq(intn){top=-1;//栈顶top为-1时,表示空栈elements=newT[n];//在堆区建立栈空间(T类型数组,首地址存放在elements中)max=n;//栈空间中最多容纳的元素个数(也就是栈空间数组的长度)assert(elements!=0);}//分配不成功,则结束程序//析构函数template<typenameT>StackSeq<T>::~StackSeq(){delete[]elements;}//释放动态存储区的栈空间//压栈template<typenameT>voidStackSeq<T>::push(Td){assert(!isFull());//栈满,则结束程序elements[++top]=d;}//栈顶指针先加1,元素d再进栈//出栈template<typenameT>TStackSeq<T>::pop(){assert(!isEmpty());//栈空,则结束程序returnelements[top--];}//返回栈顶元素,然后栈顶指针减1//读取并返回栈内第k号元素(栈内元素编号为第0~top号)template<typenameT>TStackSeq<T>::get(intk){assert(k>=0&&k<=top);//超出栈内有效数据范围,则结束程序returnelements[k];}//本操作top不变//求出栈内元素的个数template<typenameT>intStackSeq<T>::length(){return(top+1);}//输出栈内所有元素(将第0~top号的元素依次输出)template<typenameT>voidStackSeq<T>::print(){for(inti=0;i<=top;i++)cout<<elements[i];}//本操作top不变//清空栈(使栈内无任何元素,即空栈)template<typenameT>voidStackSeq<T>::empty(){top=-1;}//判断栈是否为空template<typenameT>boolStackSeq<T>::isEmpty(){return(top==-1);}//判断栈是否已满template<typenameT>boolStackSeq<T>::isFull(){return(top==max-1);}顺序栈类的应用举例cout<<“s_SS栈内元素个数=”<<s_SS.length()<<endl;cout<<“s_SS栈内元素有:\n”;s_SS.print();cout<<“s_SS栈内0号元素是:\n”<<s_SS.get(0);cout<<“s_SS栈内3号元素是:\n”<<s_SS.get(3);cout<<“s_SS栈内元素个数=”<<s_SS.length()<<endl;cout<<“依次全部出栈…\n”;while(!s_SS.isEmpty())cout<