标题:用循环数组表示队列?
只看楼主
紫罗兰丹丹
Rank: 2
等 级:论坛游民
威 望:1
帖 子:14
专家分:13
注 册:2014-3-28
结帖率:75%
已结贴  问题点数:20 回复次数:1 
用循环数组表示队列?
用一个循环数组q[0....m-1]表示队列时,该队列仅存在一个队列头指针front,不设尾指针rear,但设置计数器count记录队列中的结点数,编写算法实现判空,入队和出队。

判空的话不是要front=rear=0么?不设尾指针该怎么判空a?
那个计数器又要怎么用?

求大神给个思路...
搜索更多相关主题的帖子: 计数器 count 记录 
2014-03-29 15:46
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:20 
对于该队列,空间大小 m * sizeof(datatype),可存储数据个数 m,实际存储数据个数 count

所以队列空和队列满的条件分别是 count == 0 和 count == m

对于出入队列,其实就是头指针 front 的 前后移动和 count 加减,中间用取余操作实现循环,是同一类操作。

EnQueue(e):
  Q->q[Q->front] = e;
  Q->front  = (Q->front + 1) % M;
  Q->count += 1;

DeQueue():
  return Q->data[(Q->front + M - Q->count--) % M];

[ 本帖最后由 azzbcc 于 2014-3-31 13:11 编辑 ]


[fly]存在即是合理[/fly]
2014-03-31 12:40



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-429358-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032517 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved