队列的存储与操作_第1页
队列的存储与操作_第2页
队列的存储与操作_第3页
队列的存储与操作_第4页
队列的存储与操作_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、成 绩评阅人重庆邮电大学课程设计实验报告班级:1301416姓名:陈昊学号:2014214156指导老师:夏晨洋课程名称:数据结构实验时间:2015年10月26日-2015年11月2日实验地点:数字图书馆负一楼B132实验四 队列的存储与操作一、实验目的1理解队列是限定只能在队头进行删除操作在队尾进行插入操作的线性表;2理解队列的存储结构特点,掌握队列的存储分配要点;3掌握队列的基本操作及实现,深刻领会队列操作的先进先出特征,并能正确分析其时间复杂度,知道队列性能优于普通线性表,以及队列的常用情形。二、主要数据结构描述class CirQueuepublic: CirQueue( ); /构造

2、函数,置空队 CirQueue( ); /析构函数 void EnQueue(T x); /将元素x入队 T DeQueue( ); /将队头元素出队 T GetQueue( ); /取队头元素(并不删除) bool Empty( ); /判断队列是否为空private: T dataQueueSize; /存放队列元素的数组 int front, rear; /队头和队尾指针,分别指向队头元素的前一个位置和队尾元素的位置;在循环队列这个数据结构中,需要一个构造函数,来创建一个空的队列;需要一个析构函数来删除队列;需要一个EnQueue()函数来插入一个数据;需要一个DeQueue()函数来将

3、队头的元素出队;需要一个DeQueue()函数来输出队头的值;需要一个布尔型的函数来判断队列是否为空。三、算法的基本思想描述1.构造函数:令头指针和尾指针均为零。2.析构函数:空的析构函数。3.入队函数:函数的形参为将存入队列的数据的值。因为判空和判满都需要用到rear=front,所以在判满的操作中,对rear+1取模,在循环的意义下进行判断。如果(rear+1)% QueueSize=front,那么队满。如果没有队满,那么就在循环+1下标的位置存入当前数据。4.出队操作:这里的出队不是删除相应的数据,而是将队头指针+1。首先判断队是否为空,如果不为空就将队头指针在循环意义上+1。5.取队

4、头元素:将队头元素的值取出。6.判空:如果rear=front则为空,否则不为空。因为不涉及循环,所以所有函数的时间复杂度都为O(1)。四、 运行的结果截图五、 实验体会和收获经过本次试验。我对循环队列有了更深的理解。了解了队列先进先出的特点。知道了如何运用队列解决相应的问题。六、程序清单。CirQueue.hCirQueue.cppCirQueueMain.cpp六、 链队列链队列与顺序队列大致相同,只是用链表来表示而已。链队列的队头指针指向头结点,队尾指针指向终端节点。基本数据结构:class LinkQueuepublic: LinkQueue( ); /构造函数,初始化一个空的链队列 LinkQueue( ); /析构函数,释放链队列中各结点的存储空间 void EnQueue(T x); /将元素x入队 T DeQueue( ); /将队头元素出队 T GetQueue( ); /取链队列的队头元素 bool Empty( ); /判断链队列是否为空private: Node<T> *front, *rear; /队头和队尾指针,分别指向头结点和终端结点;思想与顺序队列一致。需要注意的是对节点的增加和删除。在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论