pascal——栈和队列(TT).ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TT 概念: 栈和队列是两种重要的线性结构。从数据结构角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表,因此,可称为限定性的数据结构。但从数据类型角度看,它们是和线性表大不相同的两类重要的抽象数据类型。本章除了讨论栈和队列的定义、表示方法和实现外,还将给出一些应用的例子。 目录 1 栈 2 栈的应用举例 3 队列 一·栈 抽象数据类型栈的定义 栈(Stack) 是限定仅在表尾进行插入或删除操作的线性表。因此, 对栈来说,表尾端有其特殊含义,称为栈顶(top),相应地,表头端称为栈底(bottom)。不含元素的空表称为空栈。 假设栈S=(a1,a2,…,an),则称a1为栈底元素,an为栈顶元素。栈中元素按a1,a2,…,an的次序进栈,退栈的第一个元素应为栈顶元素。换句话说,栈的修改是按后进先出的原则进行的(如图3.1(a)所示)。 因此,栈又称为后进先出(Last lnFirstOut)的线性表(简称LIFO结构),它的这个特点可用图3.1(b)所示的铁路调度站形象地表示。 图3.1 栈 (a)栈的示意图 (b) 用铁路调度站表示栈 栈的基本操作 栈的基本操作主要须掌握三点,两个过程,一个函数。除此之外,还有判空,初始栈,删除栈,不打算进行讲解,学习时间长后自然明白。 Push(S,x) 初始条件:栈s已存在。 操作结果:插入元素e为新的栈顶元素。 Pop(S) 初始条件:栈s已存在且非空。 操作结果:删除s的栈顶元素,并用e返回其值。 GetTop(S) 初始条件:栈s已存在且非空。 操作结果:返回s的栈顶元素。 注:在以后说明中,称插入元素(push)的操作为入栈,删除栈顶(pop)元素的操作为出栈。 栈的表示和实现 和线性表类似,栈也有两种存储表示方法。即顺序栈和链栈。 顺序栈(数组储存方式),即栈的顺序存储结构是,利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。 代码:s为栈、p为指向栈顶的指针 Const m=max; Type Stack=array[1..m] of datatype; Var S:stack; p:integer; 基本操作算法描述 二· 栈的应用举例 由于栈结构具有的后进先出的固有特性,致使栈成为程序设计中的有用工具。 1. 数制转换 N N div 8 N 十进制数N和其他d进制数的转 1348 168 4 换是计算机实现计算的基本问题,其 168 21 0 解决方法很多,其中一个简单算法基 21 2 5 于下列原理: 2 0 2 N=(N div d)*d + N mod d (即N÷d

文档评论(0)

基本资料 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档