注册 登录
编程论坛 数据结构与算法

用循环数组表示队列?

紫罗兰丹丹 发布于 2014-03-29 15:46, 783 次点击
用一个循环数组q[0....m-1]表示队列时,该队列仅存在一个队列头指针front,不设尾指针rear,但设置计数器count记录队列中的结点数,编写算法实现判空,入队和出队。

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

求大神给个思路...
1 回复
#2
azzbcc2014-03-31 12:40
对于该队列,空间大小 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 编辑 ]
1