正在加载图片...
3.4队列-循环队列 3.4队列-循环队列 ,循环队列 。区分队空和队满的方法 ,约定:Q.front和Q.rear(队尾的下一个)的含义 有堆护】,设标志位(上次的更新动作):0-创建/则除,1-插入 ,队空:Q.front==Q.rear一蜘何区分队空泰队满?门 的代价?引入队列长度 ,队满:Q.front==Q.rear 。少用一个元素空间: 插入前判断Q.front==(Q.rear+1)%MAXQSIZE Q.front 1 4 Q.rear Q.front 1 Q0进a 0 Q.rear 6 49/50 回 50/50 7 图 3.4队列-循环队列 3.5离散事件模拟 ,难点 连续的存单元的上下界:[d1,d2] 问题描述P65 计算一关中客户在银行逗留的平均时间 ,初始化空队:Q.front=Q.rear=d1; ■数据结构设计 ,队空:Q.front=-=Q.rear ·四个窗口一四个队列 .队满:Q.front==(Q.rear-d1+1)%(d2-d1+1)+d1 。客户 ■入队:前提:队列不满 到达时刻 ·离开时刘办理业务所需的时间,等特时间) Q.base[Q.rear]e; ·喜件表:事件驱动 Q.rear =(Q.rear-d1+1)%(d2-d1+1)+d1; ■出队:前提:队列不空 华所合元少的队、产生 e Q.base[Q.front]; .客护高开件(区分个窗) 。事件:事件类型、事件发生时刻 Q.front =(Q.front-d1+1)%(d2-d1+1)+d1 51/50 固 52/50 图 99 49/50 3.4 队列–循环队列 „ 循环队列 „ 约定:Q.front和Q.rear(队尾的下一个)的含义 „ 队空:Q.front==Q.rear „ 队满:Q.front==Q.rear 0 1 7 2 3 4 5 6 Q.front Q.rear 0 1 7 2 3 4 5 6 Q.front Q.rear a1 a2 a3 a4 a5 如何区分队空和队满? 0 1 7 2 3 4 5 6 Q.front Q.rear a1 a2 a3 a4 a5 a6 a7 a8 50/50 3.4 队列–循环队列 „ 区分队空和队满的方法 „ 设标志位(上次的更新动作):0-创建/删除,1-插入 „ 引入队列长度 „ 少用一个元素空间: 插入前判断 Q.front==(Q.rear+1)%MAXQSIZE 0 1 7 2 3 4 5 6 Q.front Q.rear 0 1 7 2 3 4 5 6 Q.front Q.rear a1 a2 a3 a4 a5 a6 a7 有维护 的代价 51/50 3.4 队列–循环队列 „ 难点 连续的存储单元的上下界:[d1,d2] „ 初始化空队:Q.front = Q.rear = d1; „ 队空:Q.front==Q.rear „ 队满:Q.front==(Q.rear-d1+1)%(d2-d1+1)+d1 „ 入队: 前提:队列不满 Q.base[Q.rear] = e; Q.rear = (Q.rear-d1+1)%(d2-d1+1)+d1; „ 出队:前提:队列不空 e = Q.base[Q.front]; Q.front = (Q. front-d1+1)%(d2-d1+1)+d1 52/50 3.5 离散事件模拟 „ 问题描述 P65 计算一天中客户在银行逗留的平均时间 „ 数据结构设计 „ 四个窗口---- 四个队列 „ 客户 „ 到达时刻 „ 离开时刻(办理业务所需的时间,等待时间) „ 事件表:事件驱动 „ 客户到达事件:入队(选择所含元素最少的队列)、产生离 开事件插入到事件表中 „ 客户离开事件(区分是哪个窗口) „ 事件:事件类型、事件发生时刻
<<向上翻页
©2008-现在 cucdc.com 高等教育资讯网 版权所有