ホームページ > ウェブフロントエンド > jsチュートリアル > データを交換せずにリンク リスト内のノードを交換する JavaScript プログラム

データを交換せずにリンク リスト内のノードを交換する JavaScript プログラム

WBOY
リリース: 2023-08-24 20:05:02
転載
814 人が閲覧しました

用于在不交换数据的情况下交换链表中的节点的 JavaScript 程序

データを交換せずにリンク リスト内のノードを交換する JavaScript プログラムは、リンク リスト内のノードの順序の並べ替えを伴う Web 開発における一般的な問題です。リンクされたリストはノードで構成されるデータ構造であり、各ノードにはデータの一部とリスト内の次のノードへの参照が含まれます。

この記事では、JavaScript を使用してデータを交換せずにリンク リスト内のノードを交換するための完全なチュートリアルを学習します。したがって、最初に交換ノードを定義してから、チュートリアルを続けましょう。だから、学び続けてください!

交換ノード

リンクリスト内のノードを交換するということは、2 つのノードの位置を交換することを意味します。リンク リスト内のノードを交換するには、さまざまな方法があります。 1 つのアプローチはノード間でデータを交換することですが、これは大量のデータを扱う場合には非効率となる可能性があります。別のアプローチは、ノードへのポインタを交換することです。データをコピーする必要がないため、これはより効率的です。

例を通してスイッチング ノードを理解しましょう

###例###

以下に示すようなリンク リストがあるとします -

1 -> 2 -> 3 -> 4 -> 5

2 番目と 4 番目のノードを交換して次を取得します。

1 -> 4 -> 3 -> 2 -> 5

ノード内でデータを交換せずにこれを実現するには、ノード間のリンクを変更する必要があります。結果として得られるリンク リストには、元のリンク リストと同じデータが含まれますが、ノードの順序が変更されています。

したがって、最初に交換する 2 つのノード (ノード 2 とノード 4) を特定します。また、リスト内のこれらのノードの前後のノードを追跡する必要もあります。

この例では、ノード 2 の前後のノードはそれぞれ 1 と 3 です。ノード 4 の前後のノードはそれぞれ 3 と 5 です。

次に、ノード間のリンクを更新する必要があります。まず、ノード 2 の前のノードの次のポインタをノード 4 に設定します。次に、ノード 2 の次のポインタをノード 5 に設定します (ノード 4 がノード 2 の後ろにあるため)。最後に、ノード 4 の次のポインタをノード 3 に設定します (ノード 2 がノード 4 の後ろにあるため)。

生成されるリンクリストは次のとおりです -

1 -> 4 -> 3 -> 2 -> 5

- 各ノードのデータは変更されず、ノードの順序が変更されるだけです。 次に、データを交換せずにリンク リスト内のノードを交換するために使用するアルゴリズムを見てみましょう。

###アルゴリズム###

STEP1

: 交換する必要がある 2 つのノードを特定します

最初のステップは、交換する必要がある 2 つのノードを特定することです。ノード A とノード B を交換するとします。

ステップ 2

: 交換する 2 つのノードのうち、前のノードを見つけます

リンクされたリストでノード A と B の前のノードを見つける必要があります。これらのノードをそれぞれ PrevA および PrevB と呼びます。

ステップ 3

: 前のノードの次のポインターを別のノードを指すように更新します

次に、PrevA と PrevB の次のポインターを更新して、正しいノードを指すようにする必要があります。これには、PrevA の next ポインタをノード B を指すように更新し、PrevB の next ポインタをノード A を指すように更新することが含まれます。

ステップ 4

: 交換するノードの次のポインターを更新して、正しいノードを指すようにします。

次に、ノード A と B の次のポインターを更新して、正しいノードを指すようにする必要があります。これには、ノード B の次のノードを指すようにノード A の次ポインタを更新し、ノード A の次のノードを指すようにノード B の次ポインタを更新することが含まれます。

ステップ 5

: 交換する必要がある他のノードに対して上記のステップを繰り返します。

3 つ以上のノードを交換する必要がある場合は、交換する必要があるノードのペアごとに上記の手順を繰り返します。

これらの手順を完了すると、リンク リスト内のノードが交換されますが、それらのデータは交換されません。 JavaScript を使用して実装する例を使用して、上記のアルゴリズムを理解しましょう。 ###例###

このプログラムでは、まずリンクリストのノードを作成する「Node」クラスを定義し、次にリンクリストを作成・操作する「LinkedList」クラスを定義します。 「LinkedList」クラスの「swapNodes」関数は、前述のスワップ アルゴリズムを実装します。

リーリー ###結論は###

このチュートリアルでは、データを交換せずにリンク リスト内のノードを正常に交換する、このアルゴリズムを実装する JavaScript プログラムを示します。これが読者のお役に立てば幸いです。楽しく学習してください!

以上がデータを交換せずにリンク リスト内のノードを交換する JavaScript プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート