栈是一个有序表.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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( )只能插

文档评论(0)

9988871 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档