こんにちは、優先度キューに要素を追加するための模擬テスト用に、アルゴリズム設計言語でアルゴリズムを作成しています。
ここで、要素を通常のキューの後ろに挿入する一般的な方法を使用してこれを行う予定です。次に、(優先度の値に従って) 優先度でその前に配置されている要素と比較して、正しい場所に並べ替えます。列。
これは私がこれまでに持っているアルゴリズムです(優先キューにアイテムを追加する場合のみ):
- element - キューに追加される要素。
- queue[ ] - プライオリティ キュー要素が追加されています。
- n - プライオリティ キューのサイズ。
- tail - プライオリティ キューの最後の要素。
プロシージャAddQ ( IN要素、INOUTキュー [ ]、IN n、INOUT末尾)
if tail= n then
print (“Queue is full”)
else {
tail← tail+ 1
queue (tail) ← element
}
終わり
私が確信していないのは、キューがいっぱいであることを出力するセクションが必要かということです。プライオリティ キューの末尾要素に null を指すポインターがあり、要素が残っていないことを示していると考えているのは正しいでしょうか?
もしそうなら、これはプライオリティキューの末尾がnullを指し、キューに要素がもうないと言って、新しい要素のためにプライオリティキューが空のスペース(たとえば標準配列のような)を持つことができないことを意味しますか? それとも、ここで間違ったアプローチを取っていますか?
これがどのように機能するかについて私は混乱しています。誰かが明確にすることができれば、私は非常に感謝しています! ありがとうございました。