0

サーキュラー/リングバッファーに頭を悩ませようとしていますが、質問に少し行き詰まっています。

次のような線形キューがある場合:

66、20、30、40、19、空のスロット
0 1 2 3 4 5

フロント:0(66)、バック:5、長さ:5

値が削除された場合(0が最初に追加されたと考えると、0(66)が削除されると思います。

私の質問: 20はキューの最初になりますか?そして、その後のレイアウトはどうなるでしょうか?インデックス/ポインタ、またはその性質のものなど、何かが移動しますか?

ありがとう。

4

2 に答える 2

0

はい。あなたは以下のようなものを持っているでしょう:

__   20   30   40   19   __
0    1    2    3    4    5

フロント:1、バック:5、長さ:4

'66'を0の位置に残しておくこともできます(「消去」する必要はありません)。これは、ほとんどの実装で行われていることです。キューの最初のアイテムは「フロント」インデックスが指すアイテムであり、必ずしもキューをバックアップしている配列の最初のアイテムである必要はありません。

于 2012-05-10T22:50:30.053 に答える
0

はい、その場合は20が次のキューになります。他の質問は実装によって異なります。このようにコーディングすると、物事が動く可能性があります。ただし、これは基本的に循環バッファの目的を無効にします。最も通常の実装では、ヘッドポインタとテールポインタのみが移動します。

于 2012-05-10T22:50:31.097 に答える