※ 引述《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