网站大量收购闲置独家精品文档,联系QQ:2885784924

数据结构(三).ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构(三)

数据结构(三) 常宝宝 北京大学计算机科学与技术系 chbb@pku.edu.cn 内容提要 栈 队列 栈和队列是两种特殊的线性表,其特殊性在于栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表。 栈和队列广泛地应用在各种软件系统中,是程序设计中必须掌握的两种基本数据结构。 什么是栈? 若限定仅在线性表的一端进行插入和删除操作,这样的线性表称为栈。 能够进行插入和删除操作的一端称为栈顶。另一端则相应称为栈底。 位于栈顶的元素称为栈顶元素,位于栈底的元素称为栈底元素。 不含任何元素的栈称为空栈。 栈的特点是后进先出。 Last In First Out: LIFO 上溢和下溢 和栈有关的操作 和栈有关的操作: 构造一个不含任何元素的空栈 判断栈是否为空栈 判断栈是否满 返回栈中的元素个数 清空栈 向栈顶压入 添加 一个元素 从栈顶弹出 删除 一个元素 读取栈顶元素 栈作为抽象数据类型 栈操作 栈操作 栈结构的使用 栈的实现 —顺序存储 和线性表类似,栈也有两种存储结构: 1 顺序存储 2 链式存储。 顺序存储: 用一组连续的存储单元依次存放自栈底到栈顶的数据元素。 栈的实现 —顺序存储 栈的实现 —顺序存储 栈的实现 —顺序存储 x 栈的实现 —链式存储 在栈的链式实现中,栈被组织成一个链表。 栈顶指针 在链式存储的栈中: 1 压入元素 2 弹出元素 栈的实现 —链式存储 栈的实现 —链式存储 栈的实现 —链式存储 x 什么是队列? 若限定线性表仅能在一端进行插入,另一端进行删除,这样的线性表称为队列。 能够进行插入的一端称为队尾。能够进行删除的一端称为队头。 和队列有关的操作 和队列有关的操作: 构造一个不含任何元素的空队列 判断队列是否空队列 判断队列是否满 返回队列中的元素个数 清空队列 在队尾加入一个元素 删除位于队头的元素 读取队头元素 队列作为抽象数据类型 队列的使用 队列的实现 —顺序存储 在队列的顺序实现中,用一组连续的存储单元存储队列中的元素。 1 队头固定 2 队头、队尾均不固定 3 循环数组 防止“假溢出” 队列的实现 —顺序存储 队列的实现 —顺序存储 队列的实现 —顺序存储 队列的实现 —链式存储 在队列的链式实现中,队列被组织成一个链表。 队头指针和队尾指针 在链式存储的队列中: 1 插入元素 2 删除出元素 队列的实现 —链式存储 队列的实现 —链式存储 队列的实现 —链式存储 上机作业 在机器上用C++分别实现顺序存储和链式存储的栈结构。 在机器上用C++分别实现顺序存储和链式存储的队列结构。 在实现链式存储的栈结构和队列结构时,必须提供析构函数、拷贝构造函数和赋值运算符重载函数,为什么? * * template class Stack public: enum error_code success, overflow, underflow ; protected: ... public: //操作 Stack ; Stack const Stack copy ; ~Stack ; bool empty const; bool full const; int size ; void clear ; error_code push const stack_entry item ; error_code pop ; error_code top stack_entry item const; ; Stack ::Stack ; // PRECONDITION: // POSTCONDITION: 建立了一个空栈 error_code Stack ::push const stack_entry item ; // PRECONDITION: 栈未满 // POSTCONDITION: 元素item被加入到栈的顶部 // REMARKS: 若栈未满,元素item被加入到栈的顶部,若栈已满,返回overflow error_code① Stack ::pop ; // PRECONDITION: 栈非空 // POSTCONDITION: 栈顶部的元素被删除 // REMARKS: 若栈非空,栈顶元素被删除,若栈是空栈,返回错误代码underflow ① 在实际实现时,error_code 应写作 Stack ::error_code bool Stack ::empty const; // PRECONDITION: // POSTCONDITION: 栈的状态未发生变化 // REMARKS: 若栈是空栈,返回true,若栈不是空栈,返回false

文档评论(0)

book1986 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档