Ch03 栈和队列01.ppt

Ch03 栈和队列01.ppt

ID:48793843

大小:239.00 KB

页数:40页

时间:2020-01-25

Ch03 栈和队列01.ppt_第1页
Ch03 栈和队列01.ppt_第2页
Ch03 栈和队列01.ppt_第3页
Ch03 栈和队列01.ppt_第4页
Ch03 栈和队列01.ppt_第5页
资源描述:

《Ch03 栈和队列01.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第三章栈与队列数据结构电子教案1栈队列栈的应用:表达式求值栈的应用:递归队列的应用:打印杨辉三角形优先级队列第三章栈与队列2只允许在一端插入和删除的线性表允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom)特点后进先出(LIFO,LastInFirstOut)栈(Stack)退栈进栈a0an-1an-2topbottom3templateclassStack{//栈的类定义public:Stack(){};//构造函数virtualvoidPush(constTx)=0;//进

2、栈virtualboolPop(T&x)=0;//出栈virtualboolgetTop(T&x)const=0;//取栈顶virtualboolIsEmpty()const=0;//判栈空virtualboolIsFull()const=0;//判栈满};栈的抽象数据类型4其中:elements:栈元素存放数组(指针类型)top:栈顶指针(整型)maxSize:栈的大小(整型)栈的线性存储表示—顺序栈0123456789maxSize-1top(栈空)elements5top空栈toptoptoptoptopa

3、进栈b进栈aababcdee进栈abcdef进栈溢出abdee退栈c6topc退栈b退栈abaa退栈空栈topabdd退栈ctopabctoptop7#include#include#include"stack.h"templateclassSeqStack:publicStack{//顺序栈类定义private:T*elements;//栈元素存放数组inttop;//栈顶指针intmaxSize;//栈最大容量voidoverflowProce

4、ss();//栈的溢出处理顺序栈的定义8public:SeqStack(intsz=50);//构造函数~SeqStack(){delete[]elements;}//析构函数voidPush(constT&x);//进栈boolPop(T&x);//出栈boolgetTop(T&x)const;//取栈顶内容boolIsEmpty()const{returntop==-1;}boolIsFull()const{returntop==maxSize-1;}intgetSize()const{returntop+1

5、;}};9顺序栈的操作templatevoidSeqStack::overflowProcess(){//私有函数:当栈满则执行扩充栈存储空间处理T*newArray=newT[2*maxSize];//创建更大的存储数组for(inti=0;i<=top;i++)newArray[i]=elements[i];maxSize+=maxSize;delete[]elements;elements=newArray;//改变elements指针};10templatevoidS

6、eqStack::Push(constTx){//若栈不满,则将元素x插入栈顶,否则溢出处理if(IsFull()==true)overflowProcess();//栈满elements[++top]=x;//栈顶指针先加1,再进栈}templateboolSeqStack::Pop(T&x){//函数退出栈顶元素并返回栈顶元素的值if(IsEmpty()==true)returnfalse;x=elements[top--];//栈顶指针退1returntrue;//退栈成功}11

7、templateboolSeqstack::getTop(T&x)const{//若栈不空则函数返回该栈栈顶元素的地址if(IsEmpty()==true)returnfalse;x=elements[top];returntrue;}12双栈共享一个栈空间b[0]t[0]t[1]b[1]0maxSize-1V两个栈共享一个数组空间V[maxSize]设立栈顶指针数组t[2]和栈底指针数组b[2]t[i]和b[i]分别指示第i个栈的栈顶与栈底初始t[0]=b[0]=-1,t[1]=b[1]=

8、maxSize栈满条件:t[0]+1==t[1]//栈顶指针相遇栈空条件:t[0]=b[0]或t[1]=b[1]//退到栈底13boolPush(DualStack&DS,Tx,inti){if(DS.t[0]+1==DS.t[1])returnfalse;if(i==0)DS.t[0]++;elseDS.t[1]--;DS.V[DS.t[i]]=x;returntrue

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。