JavaScriptでPriorityQueueから要素を取り出す方法(dequeue関数の実装)
優先度付きキュー(Priority Queue)から要素を取り出す(デキューする)ということは、最も優先度の高い要素を削除することを意味します。
この実装では、最も優先度の高い要素を配列の末尾に格納しています。そのため、JavaScriptのpop()メソッドを使えば、末尾の要素を簡単に取り出すことができます。
つまり、dequeue関数は次のように実装できます。
Example
dequeue() {
// キューが空かどうかをチェック
if (this.isEmpty()) {
console.log("Queue Underflow!");
return;
}
return this.container.pop();
}
この関数が正しく動作するかどうかは、以下のコードで確認できます。
let q = new PriorityQueue(4);
q.enqueue("Hello", 3);
q.enqueue("World", 2);
q.enqueue("Foo", 8);
console.log(q.dequeue());
q.display();
Output
上記のコードを実行すると、次のような出力が得られます。
{ data: 'Foo', priority: 8 }
[ { data: 'World', priority: 2 },
{ data: 'Hello', priority: 3 }]
ご覧のとおり、最も優先度が高い「Foo」(優先度8)が最初に取り出され、残りの2つの要素だけがキューに残っていることがわかります。また、キューが空の場合には「Queue Underflow!」というメッセージを表示して、エラーを防ぐ仕組みにもなっています。
-
JavaScriptで双方向連結リストの要素を削除する方法
双方向連結リストから要素を削除する仕組み連結リストからの要素削除は非常にシンプルです。やるべきことは「削除したいノードへの参照を失わせる」こと、つまり対象ノードをリンクのチェーンから切り離すだけです。ただし、削除する位置によって処理が異なるため、次の3つのケースを考慮する必要があります。先頭(head)の要素を削除する: head = head.next と代入するだけで、先頭ノードへの参照は失われ、headは2番目の要素を指すようになります。このとき、新しいheadのprevをnullに設定し、前方向のリンクも忘れずに切っておきます。末尾(tail)の要素を削除する: 後ろから2番目のノード
-
JavaScriptのsplice()メソッドで配列から要素を削除する方法【コード例付き】
JavaScriptのsplice()メソッドを使うと、配列から指定した位置の要素を簡単に削除できます。このメソッドは元の配列を直接変更する点が特徴です。 splice()メソッドの基本構文 arr.splice(start, deleteCount) start: 削除を開始するインデックス位置(0から始まります) deleteCount: 削除する要素の数。省略すると、開始位置から配列の末尾までがすべて削除されます 以下は、splice()メソッドを使用して配列の1番目から5番目の間の要素(インデックス1〜4)を削除するサンプルコードです。 コード例 <!DOCTYPE html