2012-03-22 10 views
0

私はキューを実装しようとしています。しかし、キューから削除すると、最も優先度の高い要素が削除されるようにしたい。すなわち、例えば手段Iは、以下の値を挿入する場合:Cのキーに基づいて多次元配列から要素を削除

Value  key  
1000  2 
9000  3 
1000  2 

をそれが最初の(この場合は3)最高のキーを持つ要素を削除する必要があり、同じキー値を持つ2つの要素がある場合、それは削除してくださいそれ以前に挿入されたもの。

注:第二次元が唯一の2

del(){ 
    if (front == -1 || front > rear) 
    { 
     printf("Queue Underflow\n"); 
     return ; 
    } 
    else 
    { 
     printf("Element deleted from queue is : %d\n", queue_arr[front][2]); 
     front=front+1; 
    } 
} 
+0

このキューはどのように実装していますか?それは有界の待ち行列ですか?私はあなたの配列が多次元であるかどうかはよく分かりません。あなたの問題は何ですか?詳細をご記入ください。 – BlackJack

+2

質問は何ですか? –

答えて

0

であるあなたが探しているものは、通常はheap data structureを使用して実装されmaximum- priority-queue、です。

キュー内の要素の優先度は<your key, insertion order>であり、your key部分の優先度はinsertion orderです。

+0

はいそれは有界のキューですか? – user1254916

+0

上記の例のように、値と優先度キーを一緒に挿入します。例えば配列[値] [キー]値が2011とキーが2であるとすると、配列内の要素を削除するときは、最も高いキーを持つ値が最初に削除されます。 2つまたは3つのキーが同じ値を持つ配列にある場合、1991がキーが3で、2011がキーも3で1987がキーも3の場合、先に挿入された値は削除されます。あなたのサポートのためにもう一度感謝します。 – user1254916

+0

私が言ったように、それは優先待ち行列です。優先順位キューでは、必要な順序で値を挿入します。削除すると、優先度(または必要に応じてキー)に応じて項目が表示されます。 – Shahbaz

関連する問題