2

重複の可能性:
循環キュー内の要素数を見つける方法

循環キューを実装していますが、キューのサイズを正しく取得できません。同じ問題に関する以前のトピックを見つけました。提案された解決策は、2 つのポインターを使用し、最初のポインターと同じオブジェクトを指していない間に 2 番目のポインターをインクリメントすることでした。しかし、このアプローチは、キューに異なるオブジェクトがある場合にのみ機能すると思います。私の場合、すべてのオブジェクトが似ています。循環キューのサイズを取得するにはどうすればよいですか? この式も私にはうまくいきません:

int size = abs(m_front -m_tail) ; 

m_front と m_tail は、テール キューとフロント キューのインデックスです。

ありがとう

4

1 に答える 1

3

これはそれを行う必要があります:

if m_front > m_tail 
    size = (m_front - m_tail)
else
    size = (m_front + N - m_tail)

N は配列の長さです。

Queue()または、 のときにカウンターをインクリメントし、 のときにカウンターをデクリメントすることで、自分で追跡することもできますDequeue()

于 2012-08-23T22:40:15.173 に答える