作者chenbojyh (阿志)
看板Grad-ProbAsk
标题Re: [理工] [资结]-circular queue
时间Sat Sep 19 08:34:28 2009
※ 引述《chenbojyh (阿志)》之铭言:
: ※ 引述《yesa315 (XD)》之铭言:
: : 问一个array q[0..n-1]来表示Circular queue
: : front指向第一个元素 rear指向最後一个元素
: : 用front及rear来表示元素个数
: : 题库上的解答是 (rear-front) mod n
: : 但我觉得很怪 应该是 (rear-front+1) mod n
: : if front =1 rear=3
: : 则元素个数应该是3-1+1=3 不应是3-1=2
: : 是答案错还是我错呢..
: : [95清大资工]
: : 谢谢
: 如果我没记错的话 (我现在身边找不到书)
: 一楼大大的是正确的
: rear指的是Queue最後一个加入之元素的下一个位址
: (也就是空的位置)
: 以你上面的例子
: if front =1 rear=3
: 在这个Circular Queue只有array[1] array[2]两个位置有存元素
: 所以理当是解答对
: 假如我上课内容没记错的话是这样......
呵呵
我记错了 (sorry > <)
如果依课本给的演算法
ADDQ(Q,item)
begin
Rear=(Rear + 1) % n;
if Rear = = Front then "Q满";
else
Q[Rear] = item;
end
Rear = 最後放入的元素位址
Front的下一个位址 = 最前端放入的元素
不过
依你给的题目
我觉得应该是你对吧
The variable front is used to point to one position from
the first element
in the circular queue.
Another variable rear is used to point to
the last element in the circular
queue.
题目的叙述的定义跟书本原本不一样
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.227.131.125