数据结构6.ppt
《数据结构6.ppt》由会员分享,可在线阅读,更多相关《数据结构6.ppt(64页珍藏版)》请在优知文库上搜索。
1、3/2/202311.The Abstract Data Type2.Formula-Based Representation3.Linked Representation4.ApplicationsChapter6 队列(Queues)3/2/202321.队列的实现2.队列的应用本章重点3/2/202331.定义 是一个线性表,其插入和删除操作分别在表的不同端进行。添加新元素的那一端被称为队尾(rear),而删除元素的那一端被称为队首(front)。2.队列是一个先进先出( first-in-first-out, FIFO)的线性表。队列(Queues)3/2/20234队列3/2/202
2、35队列3/2/20236公式化描述 公式6-1location (i)=i-13/2/202371.front:02.rear:最后一个元素的位置3.空队列:rear=-1性质3/2/20238公式化描述 公式6-2location(i)=location(1)+ i-13/2/202391.front:location(1)2.rear:location(最后一个元素)3.空队列:rearfront性质3/2/202310插入操作location(i)=location(1)+ i-13/2/202311公式化描述 公式6-3location(i)=(location(1)+i-1)% M
3、axsize3/2/2023121.front:指向队列首元素的下一个位置(逆时针方向)2.rear:队列尾3.空队列:front = rear4.队列满?性质3/2/202313队列满?3/2/202314循环队列的进队和出队3/2/202315公式化类Queuetemplateclass Queue / FIFO 对象public:Queue(int MaxQueueSize = 10);Queue() delete queue;bool IsEmpty() const return front = rear;bool IsFull() const return (rear + 1) %
4、MaxSize = front) ? 1 : 0);T First() const; /返回队首元素T Last() const; / 返回队尾元素Queue& Add(const T& x);Queue& Delete(T& x);3/2/202316公式化类Queueprivate:int front; /与第一个元素在反时针方向上相差一个位置int rear; / 指向最后一个元素int MaxSize; / 队列数组的大小T *queue; / 数组 ;3/2/202317构造函数templateQueue:Queue(int MaxQueueSize)/ 创建一个容量为MaxQueu
5、eSize的空队列MaxSize = MaxQueueSize + 1;queue = new TMaxSize;front = rear = 0;3/2/202318公式化类QueuetemplateT Queue:First() const/ 返回队列的第一个元素/ 如果队列为空,则引发异常OutOfBoundsif (IsEmpty() throw OutOfBounds();return queue(front + 1) % MaxSize;3/2/202319公式化类QueuetemplateT Queue:Last() const/ 返回队列的最后一个元素/ 如果队列为空,则引发异
6、常OutOfBoundsif (IsEmpty() throw OutOfBounds();return queuerear;3/2/202320公式化类QueuetemplateQueue& Queue:Add(const T& x)/ 把x 添加到队列的尾部/ 如果队列满,则引发异常NoMemif (IsFull() throw NoMem();rear = (rear + 1) % MaxSize;queuerear = x;return *this;3/2/202321公式化类QueuetemplateQueue& Queue:Delete(T& x)/ 删除第一个元素,并将其送入x/
7、 如果队列为空,则引发异常OutOfBoundsif (IsEmpty() throw OutOfBounds();front = (front + 1) % MaxSize;x = queuefront;return *this;3/2/202322链表描述n可以使用单向链表来实现一个队列。n思考:链表中使用几个指针?3/2/202323链表描述n需要两个变量front和rear来分别跟踪队列的两端。3/2/202324链表描述的两种方式n思考:性能相同吗?3/2/202325链表插入3/2/202326链表删除3/2/202327链表队列的类定义templateclass LinkedQu
8、eue / FIFO对象p u b l i c :LinkedQueue() front = rear = 0; / 构造函数LinkedQueue(); / 析构函数bool IsEmpty() constreturn (front) ? false : true);bool IsFull() const;T First() const; / 返回第一个元素T Last() const; / 返回最后一个元素LinkedQueue& Add(const T& x);LinkedQueue& Delete(T& x);private:Node *front; / 指向第一个节点Node *re
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构