编程论坛
注册
登录
编程论坛
→
数据结构与算法
用循环数组表示队列?
紫罗兰丹丹
发布于 2014-03-29 15:46, 783 次点击
用一个循环数组q[0....m-1]表示队列时,该队列仅存在一个队列头指针front,不设尾指针rear,但设置计数器count记录队列中的结点数,编写算法实现判空,入队和出队。
判空的话不是要front=rear=0么?不设尾指针该怎么判空a?
那个计数器又要怎么用?
求大神给个思路...
1 回复
#2
azzbcc
2014-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