6

特殊なタイプのキューであるデータ構造が必要です。キューのインスタンスにオブジェクト X が含まれていた場合、このインスタンスで X を再度キューに入れることができないようにする必要があります。エンキュー メソッドは、HashSet に重複する値を追加しようとする場合と同様に、X で呼び出された場合は何もしないでください。

使用例:

MyQueue<int> queue = new MyQueue<int>(); 
queue.Enqueue(5); 
queue.Enqueue(17); 
queue.Enqueue(28); 
queue.Enqueue(17); 
int firstNumber = queue.Dequeue(); 
queue.Enqueue(5); 
queue.Enqueue(3); 

List<int> queueContents = queue.ToList(); //this list should contain {17, 28, 3}

MSDN を調べてみましたが、そのようなクラスは見つかりませんでした。それは存在しますか、それとも自分で実装する必要がありますか?

別のデータ構造を使用することもできると思いますが、アクセスは常に FIFO になるため、キューが最も効率的であると考えました。また、このような「インスタンスの有効期間にわたる一意性」機能を提供する他の構造を知りません。

4

4 に答える 4

5

それを自分で実装する必要があります。

1 つのアイデアは、要素をHashSetエンキューするときに要素を追加することです。

次に、エンキューする場合は、項目をチェックしHashSetて、存在する場合はエンキューしないでください。

キューの残りの存続期間中はエンキューを防止したいので、おそらくHashSet.

于 2013-11-13T14:28:51.560 に答える