数据结构chapter3a.ppt

数据结构chapter3a.ppt

ID:48743518

大小:308.00 KB

页数:34页

时间:2020-01-21

数据结构chapter3a.ppt_第1页
数据结构chapter3a.ppt_第2页
数据结构chapter3a.ppt_第3页
数据结构chapter3a.ppt_第4页
数据结构chapter3a.ppt_第5页
资源描述:

《数据结构chapter3a.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第三章栈和队列3.1栈(stack)3.1.1栈的定义及基本运算栈(Stack):限定仅只能在表尾进行插入和删除的线性表。栈顶(Top):表尾。栈底(Bottom):表头。不含元素的空表称空栈。栈和队列是两种特殊的线性表,是操作受限的线性表。ana1a2……...栈底栈顶...出栈进栈栈s=(a1,a2,……,an)假设栈S=(a1,a2,a3,…an),则a1称为栈底元素,an为栈顶元素。ana1a2……...栈底栈顶...出栈进栈栈s=(a1,a2,……,an)栈中元素按a1,a2,a3,…an的次序进栈

2、,退栈的第一个元素应为栈顶元素。换句话说,栈的修改是按后进先出的原则进行的。因此,栈称为后进先出表(LIFO)。栈顶栈底an…a1a2...an进栈出栈抽象数据类型栈的定义:ADTStack{数据对象:数据关系:约定an端为栈顶,a1端为栈底。基本操作:InitStack(&S)操作结果:构造一个空栈S。DestroyStack(&S)初始条件:栈S已存在。操作结果:栈S被销毁。ClearStack(&S)初始条件:栈S已存在。操作结果:将S清为空栈。StackEmpty(S)初始条件:栈S已存在。操作结果:

3、若栈S为空栈,则返回TRUE,否则FALE。StackLength(S)初始条件:栈S已存在。操作结果:返回S的元素个数,即栈的长度。GetTop(S,&e)初始条件:栈S已存在且非空。操作结果:用e返回S的栈顶元素。Push(&S,e)初始条件:栈S已存在。操作结果:插入元素e为新的栈顶元素。Pop(&S,&e)初始条件:栈S已存在且非空。操作结果:删除S的栈顶元素,并用e返回其值。}ADTStack栈的存储方式:1、顺序栈:利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈

4、顶元素在顺序栈中的位置。★栈底元素是最先进入的,实际上是线性表的第一个元素。2、链栈:利用链表实现。3.1.2栈的表示和实现#defineSTACK_INIT_SIZE100;//存储空间初始分配量#defineSTACKINCREMENT10;//存储空间分配增量typedefstruct{SElemType*base;//栈底指针SElemType*top;//栈顶指针intStackSize;//栈的当前已分配的存储空间.}SqStack;顺序栈的定义:空栈base==top是栈空标志stacksize

5、=5topbaseAtopbaseABCDEbaseABtoptopbase31204插入新的栈顶元素时,指针top增1;删除栈顶元素时,指针top减1,因此,非空栈中的栈顶指针始终在栈顶元素的下一个位置上。栈满顺序栈的图示anaiai-1a2a1S.topS.stacksizeS.baseSTACK_INIT_SIZEnn-1i-1i-210nn-1i-1i-210S.topS.stacksizeS.baseSTACK_INIT_SIZE初始化操作图示初始化操作图示StatusInitStack(SqSta

6、ck&S){//构造一个空栈SreturnOK;}S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!S.base)exit(OVERFLOW);//存储分配失败S.top=S.base;S.stacksize=STACK_INI_SIZE;nn-1i-1i-210anaiai-1a2a1S.topS.stacksizeS.baseSTACK_INIT_SIZEnn-1i-1i-210S.topS.stacksizeS.baseST

7、ACK_INIT_SIZEanaiai-1a2a1置空栈操作图示S.base=S.top表明栈为空置空前置空后StatusClearStack(SqStack&S);{//将S清为空栈}If(!S.base)returnERROR;S.top=S.base;StatusStackEmpty(SqStackS);{//若栈S为空栈,则返回TRUE,否则FALE。}If(!S.base)returnERROR;If(S.top==S.base)returnTRUE;elsereturnFALSE;S.top=nu

8、llS.stacksizeS.base=null0nn-1i-1i-210anaiai-1a2a1S.topS.stacksizeS.baseSTACK_INIT_SIZE销毁前销毁后销毁栈操作图示StatusDetroyStack_Sq(SqStack&S)//销毁一个已存在的栈;{returnOK;}If(!S.base)returnERROR;free(S.base);//回收栈空间S.bas

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

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

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