2017-05-08 10 views
0

私は循環キュー内に[0、n-1]があり、[n]は再び[0]の場所にあることを知っています。配列を使用している場合は、A [n-1]へのポインタを1つ増やしてA [0]へのポインタを与える必要があります。このようなデータ構造>キュー:なぜ(rear = front)が空の条件ですか?

通常のキュー:

| _ empty1_ | _ empty2_ | _ empty3_ | _ empty4_ | ...

ので、 "フロント" のポイントここで "EMPTY1" へ。しかし、

最初の質問:キューが空の場合のリアポイントはどこですか?

第2質問:セル「empty1」のキューに要素が1つ含まれている場合、 (* 1)

PS:空のリニアキューとは、rear = -1とfront = 0を意味し、1つのセルがいっぱいのキューはrear = front = 0を意味します。しかし、いくつかの擬似コードでは、(フロント=リア) - >キューがいっぱいになっているのを見たことがあります。だからこれは何ですか?配列のセルは0からn-1までの順番で並べられます。したがって、rear = front = 0には、1つのセルが埋め込まれ、両方が指し示すセルがあります。 (?右)円形キューに


、ステートメント{リア=フロント}キューが空であることを示し、完全なキューの我々は:リア、= 0フロント、N-1 =リア+ 1 = front = 0 = n。


(* 1):私の3番目の質問は第二と同じですが、通達のために。

答えて

0

下記のすべての質問に対する回答をご覧ください。

  1. キューが空の場合、リアは、フロントノードと同じように最初のヌルノードを指します。今

は2番目と3番目の疑いのために、私はあなたに組み合わせた回答を与えるので、私はあなたに私はキューを実装するという点で続く私のロジックを教えてくれますし、私はそれはあなたが のために独自のロジックを作成するのに役立つことを願っていますキューのデータ構造。

私はFIFO(First In First Out)のような機能が必要なときにキューを利用します。今私は私のストレージDSとして配列をとっているので、私は配列Aのサイズとしてnを持っているとしましょう。 したがって、要素を挿入すると、rear = rear + 1になります。私のリアはインサート操作に基づいてインクリメントし続けます。今度は rear == nになると、私のArrayはいっぱいになります。

空であるかどうかをチェックするには、配列の中にある要素があるときは、その時点でfrontとrear = 0となるので、別の要素を削除するときは、frontとrear = -1の両方を作成します。今度は最初の要素を挿入したときに、前と後を0にして、操作ごとにリアの値を変更して行くことができます。

また、これは私のアプローチだと言いますが、私は自分の要件と使用方法に基づいてそれを変更します。希望がこれを助ける:)

関連する問題