数据结构实验设计双端队列.docVIP

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

江西农业大学 数据结构 专业班级:软件1104班 学生姓名:彭胜 学号指导老师:杨文姬老师 联系邮箱:799275381@ 目录 一.系统简介 3 二.需求分析 4 三.功能分析 5 四.概要设计 7 五.详细设计 9 六.体会心得 32 实验题目:双端队列 双端队列是插入和删除操作可以在两端进行的线性表,表的两端分别称作端点1和端点2.设计双端队列的数据结构,实现入队、出队等基本操作。 一.系统简介   双端队列是限定插入和删除操作在表的两端进行的线性表。这两端分别称做端点1和端点2(如下图(a)所示)。也可像栈一样,可以用一个铁道转轨网络来比喻双端队列,如下图(b)所示。在实际使用中,还可以有输出受限的双端队列(即一个端点允许插入和删除,另一个端点只允许插入的双端队列)和输入受限的双端队列(即一个端点允许插入和删除,另一个端点只允许删除的双端队列)。而如果限定双端队列从某个端点插入的元素只能从该端点删除,则该双端队列就蜕变为两个栈底相邻的栈了。 ?? 尽管双端队列看起来似乎比栈和队列更灵活,但实际上在应用程序中远不及栈和队列有用。 双端队列与栈或队列相比,是一种多用途的数据结构,在容器类库中有时会用双端队列来提供栈和队列两种功能。 1.双端队列定义 双端队列是一个两端都是结尾的队列,是在简单队列数据结构上的改进,其数据结构类似于双向链表,在每头分别设有对头和队尾两个指针; 双端队列是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表两端进行; 双端队列在队列的基础上,对其进行了堆栈化; 2.双端队列特点 双端队列同时具有队列和栈的性质; 双端队列中的元素可以从两端弹出; 如果严格禁用右段的操作,双端队列功能就和栈一样; 如果严格禁用左段的操作,它的功能就和队列一样; 双端队列与栈或队列相比,是一种多用途的数据结构,在容器类库中有时会用双端队列来提供栈和队列两种功能。 双端队列由程序员是控制的 3.双端队列功能 设计双端队列的数据结构,实现入队、出队等基本操作; 4.双端队列实验的基本运算 定义双端队列的抽象数据类型; 设计存储结构存储双端队列; 分析算法的时间性能; 双端队列初始化; 双端队列清空; 双端队列头插入 双端队列头取数据 双端队列尾插入 双端队列尾取数据 5.双端队列实验的接口要求 用户能输入数据,和程序能有交互 三.功能分析 该程序主要实现以下5个功能: 1. 从队列首输入数据 2. 从队列尾输入数据 3. 从队列首取数据 4. 从队列尾取数据 5. 队列清空 针对需要实现的功能做出详细的算法设计 采用双向队列来实现,队列中有两个指针,一个指针指向队首结点,一个指向队尾结点。 定义一个结构体,其中包含一个数据域和两个指针域,数据域用来存放数据,一个指针域用来存放指向前驱结点的指针,另一个指针域用来存放指向后继结点的指针。 1.新建结点就是分配一个新的内存空间。 2.每次分配空间都需要判断是否能分配到内存空间,如果未得到内存空间则终止当前操作。 3.队列中只有头结点,该队列即为空队列。 以上3点后面不再重复说明。 (一) 从顶部入队列 新建一个结点,如果队列为空,则将队列的队首指针和队尾指针均指向新建结点,如不为空则将队首指针指向新建结点,并将新建结点的后继指针指向原队首结点,原队首结点的指针指向新建结点。 (二) 从顶部出队列 首先判断队列是否为空,如为空则提示队列为空,如不为空则将队首结点赋给临时结点。将队首结点的后继指针赋给队列的队首指针,再将队首结点的前驱指针置空。最后返回临时结点或所需要的数据。 (三) 从底部入队列 新建一个结点,如果队列为空,则将队列的队首指针和队尾指针均指向新建结点,如不为空则将队尾指针指向新建结点,并将新建结点的前驱指针指向原队尾结点,原队尾结点的指针指向新建结点。 (四) 从底部出队列 首先判断队列是否为空,如为空则提示队列为空,如不为空则将队尾结点赋给临时结点。将队尾结点的前驱指针赋给队列的队尾指针,再将队尾结点的后继指针置空。最后返回临时结点或所需要的数据。 (五) 队列清空 将队列的队首指针和队尾指针置空即可。 四.概要设计 (1)系统功能结构设计 该程序主要实现以下5个功能: 1. 从队列首输入数据 2. 从队列尾输入数据 3. 从队列首取数据 4. 从队列尾取数据 5. 队列清空 6.退出 (2)数据结构设计针 对需要实现的功能做出详细的算法设计 采用双向队列来实现,队列中有两个指针,一个指针指向队首结点,一个指向队尾结点。 定义一个结构体,其中包

文档评论(0)

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

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

1亿VIP精品文档

相关文档