3.3.3顺序队列1顺序队列的存储结构下图是一个有6个存储空间的顺序队列的示意图,图中front指示队头,rear指示队尾。555rear=5E44443D3rear=3rear=322cCcfront=front=2B111front0front=0A0= 0rear(a)(b)(c)(d)
1 顺序队列的存储结构 下图是一个有6个存储空间的顺序队列的示意图,图中 front指示队头,rear指示队尾。 4 3 2 1 = 0 5 front rear (a) C B A 4 3 2 1 0 5 front= rear= (b) C 4 3 2 1 0 5 front= rear= (c) E D C 4 3 2 1 0 5 front= rear= (d) 3.3.3 顺序队列
2顺序队列的“假溢出”问题顺序队列因多次入队列和出队列操作后出现的有存储空间但不能进行入队列操作的溢出称作假溢出6rear=5rear=5F4EE43D3D2front=c2front=C100
2 顺序队列的“假溢出”问题 E D C 4 3 2 1 0 5 F front= rear= 6 E D C 4 3 2 1 0 5 front= rear= 顺序队列因多次入队列和出队列操作后出现的有存储空间但 不能进行入队列操作的溢出称作假溢出
3顺序循环队列的基本原理假溢出是由于队尾rear的值和队头front的值不能由所定义数组下界值自动转为数组上界值而产生的。因此,解决的方法是把顺序队列所使用的存储空间构造成一个逻辑上首尾相连的循环队列。当rear和front达到maxSize-1后,再加1就自动到o。这样,就不会出现顺序队列数组的头部已空出许多存储空间,但队尾却因数组下标越界而引起溢出的假溢出问题
3 顺序循环队列的基本原理 假溢出是由于队尾rear的值和队头front的值不能由 所定义数组下界值自动转为数组上界值而产生的。因 此,解决的方法是把顺序队列所使用的存储空间构造 成一个逻辑上首尾相连的循环队列。 当rear和front达到maxSize-1后,再加1就自动到0。 这样,就不会出现顺序队列数组的头部已空出许多存 储空间,但队尾却因数组下标越界而引起溢出的假溢 出问题
例:一循环队列如下图所示,若先删除4个元素,接着再插入4个元素,请问队头和队尾指针分别指向哪个位置?J2J3J8J9rearJ7J1J4J6J5front=1J5front=5front-5rear-0rear=0解:由图可知,队头和队尾指针的初态分别为front=1和rear=0。删除4个元素后,front=(1+4)%6=5;再插入4个元素后,rear=(0+4)%6=4
例: 一循环队列如下图所示,若先删除4个元素,接着再 插入4个元素,请问队头和队尾指针分别指向哪个位置? J2 J3 J1 J4 front=1 J5 rear=0 解:由图可知,队头和队尾指针的初态分别为front=1和rear=0。 删除4个元素后,front= (1+4)%6 =5; 再插入4个元素后,rear=(0+4)%6=4 front=5 J6 J5 J7 J8 J9 rear=4 rear=0 front=5
4顺序循环队列的队空和队满判断问题数据元素入队列front=ofront=oA5AA4040rear=l3312B2front=orear=0rear=2FE5A4031D2B队列满状态front==rearC
4 顺序循环队列的队空和队满判断问题 1 5 4 0 3 2 front=0 rear=1 A 1 5 4 0 3 2 front=0 rear=2 A B 1 5 4 0 3 2 E D F A B C rear=0 front=0 队列满状态front==rear 数据元素入队列