- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3
第3章 栈与队列
PAGE 70
PAGE 69
基本观念
基本观念
1 栈
2 队列
栈与队列
栈与队列
Chapter 3
Chapter 3
3-1 栈
一、定义
栈是一个有序表,所有的插入(insert)与删除(delete)动作均是在栈的顶端(top)进行,具有先进后出(FILO)或后进先出(LIFO)的特性。
二、应用
子程序的调用及返回处理。
递归程序的调用及返回处理。
算术式的转换。
二叉树的遍历。
图的遍历。
中断的处理。
三、栈的工作定义
无论栈是采用何种方式实现,均需具备以下功能:
CREATE(S):建立一个空栈。
PUSH(data, S):将数据插入栈的顶端。
POP(S):返回栈顶端的数据,并将该数据自栈中删除。
TOP(S):返回栈顶端的数据,但不将该数据自栈中删除。
EMPTY(S):若栈内已无任何数据,就返回真(true),否则就返回假(false)。
四、插入及删除数据的算法
将一笔数据插入栈中的算法:
Procedure PUSH(data, stack, n, top)
If (topn) then
Call STACK-FULL( )
Else
stack(top)←data
top←top+1
end if
end PUSH
【说明】
(1)data:代表要插入栈中的数据。
(2)stack:是一个指向栈起点的指针(pointer)。
(3)n:记录栈的大小。
(4)top:是一个指向栈顶端的指针,亦即指向栈中下一个可以存放数据的指针。
(5)STACK-FULL( ):是一个错误警告子程序,用来表示现在的栈已经满了,无法再做插入数据的动作了。
(6)‘←’:表示将右边的数据存入左边所指的位置,所以“stack(top)←data”表示将数据data存入stack + top所指的位置中。
自栈中取出一笔数据,并删除该笔数据的算法:
Procedure POP(stack, data, top)
if ( top=1) then
Call STACK_EMPTY( )
else
top ← top-1
data ← stack(top)
end if
end POP
【说明】 STACK_EMPTY( )是一个错误警告子程序,用来表示现在的栈已经是空的,无法再做取出或删除数据的动作了。
注:以上两个算法PUSH( )及POP( ),若数组起始编码是从1开始,则栈可以插入或删除n笔数据;但若是从零开始,则算法POP( )中的if判断式须修改成if (top=0) then call STACK-EMPTY( ),如此即可插入或删除n+1笔数据了。
试说明栈(stack)的特性,最好以绘图法说明之。并列举栈的两种用途,应简略说明用途的作法和意义。
【解析】 1. 特性:STACK是一有序表,所有的插入和删除都在顶端进行,具有先进后出的特性,如下图所示:
2. 用途:
? 子程序的调用及返回处理(Subroutine Call and Return):子程序调用之前,必须先将其下一个指令地址,即返回地址存于栈(stack)中,以利子程序执行完毕时,能从栈中取回原来的返回地址,继续往下执行程序。
例如:有三个程序,其调用关系如下所示:
可以看出程序A调用程序B,之后程序B再调用程序C,而变量及返回地址在栈中的情形如下所示:
? 二叉树之前序(preorder)、中序(inorder)及后序(postorder)遍历。
List four legal operations which can be performed on a stack.
[89年淡大资工所]
【解析】 1. PUSH:将数据放入STACK。
2. POP:将数据从STACK中拿出,并删除之。
3. CREATE:建立一个STACK。
4. TOP:返回顶端的元素。
假设stack以一个一维数组A(1:n)表示,请写出insert与delete一个元素的algorithm.
[85年高考]
【解析】 1. insert的算法如下:
Procedure INSERT(data, stack, n, top)
if (topthen
call STACK_FULL( )
else
top←top+1
stack(top)←data
end if
end INSERT
2. delete的算法如下:
Procedure DELETE(stack, data, top)
if(top0) then
call STACK_EMPTY( )
else
data←stack(top)
top←top-1
end if
end DELETE
注意:上述两种算法INSERT( )及DELETE( )只能插
您可能关注的文档
最近下载
- 人教版(新插图)五年级上册数学全册教学课件.pptx
- 《机械制图与CAD绘图》课件——剖视图.pptx VIP
- TEAC V-970X_R-919X三磁头卡座维修手册.pdf
- 03S402 室内管道支架及吊架.docx VIP
- 体例格式6:工学一体化课程《windows服务器基础配置与局域网组建》任务7学习任务分析表.docx VIP
- 【初中生物】光合作用第一课时 2024--2025学年北师大版生物七年级上册(2024版).pptx VIP
- 高标准农田高效节水灌溉工程建设项目建议书.pdf VIP
- 统编版(2024新版)七年级上册历史必背知识点提纲详细版 .pdf VIP
- SL 228-2013 混凝土面板堆石坝设计规范.pdf VIP
- 个人简历表格下载word(最新).pdf VIP
原创力文档


文档评论(0)