目次
リンクリスト構造
まず、現在のノードの値と次のノードへのポインターを格納するクラス ノードを作成します。その後、リンク リストの作成を支援するプッシュ関数を作成し、最後にリンク リストの印刷を支援する表示関数を作成します。まずコードを見てみましょう -
クラスを作成し、必要な基本関数を定義した後、メイン関数に進み、最後の k 要素をリンク リストの先頭に移動する関数を定義します。これは、リンク リストの回転を表します。最後の k 要素を最初の要素に追加する方法は 2 つあります。これは、リンク リストの右回転に相当します。たとえば、-
このメソッドでは、最後のノードに移動し、それを前のヘッド ノードに移動して、ヘッド ノードを更新します。まずコードを見てみましょう -
上記のコードでは、上で定義した基本関数のリンク リスト コードを使用し、リンク リストを回転する新しい関数を追加するだけです。
リンクされたリストを 1 回回転します
このチュートリアルでは、JavaScript プログラミング言語でリンク リストを時計回りに回転する方法を学びました。概念を深く理解するためにコードを見てきました。 JavaScript のリンク リストの基本構造は、JavaScript のクラスを使用して作成でき、ノードをある位置から別の位置に移動して回転させることができます。プログラムの時間計算量は O(N*N) ですが、これはさらに O(N) まで改善できますが、プログラムの空間計算量は O(1) です。
ホームページ ウェブフロントエンド jsチュートリアル リンクされたリストを時計回りに回転させる JavaScript プログラム

リンクされたリストを時計回りに回転させる JavaScript プログラム

Aug 25, 2023 am 11:37 AM

リンクされたリストを時計回りに回転させる JavaScript プログラム

JavaScript のリンク リストの基本構造は、JavaScript のクラスを使用して作成でき、ノードをある位置から別の位置に移動して回転させることができます。この記事では、JavaScript プログラミング言語でリンク リストを時計回りに回転する方法を学びます。これらの概念をより深く理解するためのコードを見ていきます。

この問題では、リンク リストが与えられており、それを時計回りに回転する必要があります。これは、すべての移動で最後の要素を最初に配置する必要があり、k 回回転する必要がある場合は、リンクされたリストの先頭または開始ノードの前に最後の要素を配置する必要があることを意味します。前に見たリンク リストを作成するには、データをバインドするクラスと次の要素へのポインターが必要です。

リンクリスト構造

###例###

まず、現在のノードの値と次のノードへのポインターを格納するクラス ノードを作成します。その後、リンク リストの作成を支援するプッシュ関数を作成し、最後にリンク リストの印刷を支援する表示関数を作成します。まずコードを見てみましょう -

リーリー

上記のコードでは、class キーワードを使用してクラスを作成し、「this」キーワードを使用してデータとクラス コンストラクター内の次のノードへのポインターを保存するセクションを作成しました。

その後、2 つのパラメーターを取るプッシュ関数を定義します。最初のパラメーターはリンク リストの先頭、2 番目のパラメーターはリンク リストに追加する新しいノードのデータです。関数では、新しいノードを作成し、そこに値を保存します。先頭が空であるかどうかを確認し (最初の要素を追加することを意味します)、単純に新しいノードを返します。それ以外の場合は、ループを使用してリンクされたリストの末尾に移動し、そこに新しいノードを追加します。 p>

問題の解決策

クラスを作成し、必要な基本関数を定義した後、メイン関数に進み、最後の k 要素をリンク リストの先頭に移動する関数を定義します。これは、リンク リストの回転を表します。最後の k 要素を最初の要素に追加する方法は 2 つあります。これは、リンク リストの右回転に相当します。たとえば、-

です。

リンクされたリストが与えられます: 1 -> 2 -> 3 -> 4 -> 5 -> null

リストされたリンクを時計回りに 1 回回転させたいので、次のようになります -

リーリー

同様に、リンク リストを 3 回転すると、リンク リストは次のようになります -

リーリー

リンク リストの前に最後の要素を追加するには、1 つずつまたは一度に追加する 2 つの方法があります。

リンクされたリストを 1 つずつ回転します

###例###

このメソッドでは、最後のノードに移動し、それを前のヘッド ノードに移動して、ヘッド ノードを更新します。まずコードを見てみましょう -

リーリー

上記のコードでは、上で定義した基本関数のリンク リスト コードを使用し、リンク リストを回転する新しい関数を追加するだけです。

関数rotateでは、最初にwhileループを使用してリンク・リストをk回走査し、各反復でリンク・リストの最後から2番目の要素に到達します。次に、リンク リストの最後の要素をリンク リストから削除し、リンク リストの先頭の前に配置します。最後に、新しいヘッダーを返し、display 関数を使用して新しいリンクされたリストを表示します。

時間と空間の複雑さ

リンク リストを k 回移動し、リンク リストのサイズは N であるため、プログラムの全体的な時間計算量は O(N*K) になります。さらに、余分なスペースを使用していないため、プログラムのスペース複雑さは O(1) であり、これは定数です。

リンクされたリストを 1 回回転します

前のコードでは、リンク リストをより適切に移動し、リンク リストのサイズを取得できるように、要素を 1 つずつ追加しましたが、O(N*N) 時間がかかりました。その後、リンク リストを再度走査して最後の k 要素を取得し、それらをリンク リストの先頭に追加します。これにより、プログラムの時間計算量は O(1) になります。

###結論は###

このチュートリアルでは、JavaScript プログラミング言語でリンク リストを時計回りに回転する方法を学びました。概念を深く理解するためにコードを見てきました。 JavaScript のリンク リストの基本構造は、JavaScript のクラスを使用して作成でき、ノードをある位置から別の位置に移動して回転させることができます。プログラムの時間計算量は O(N*N) ですが、これはさらに O(N) まで改善できますが、プログラムの空間計算量は O(1) です。

以上がリンクされたリストを時計回りに回転させる JavaScript プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか? 独自のJavaScriptライブラリを作成および公開するにはどうすればよいですか? Mar 18, 2025 pm 03:12 PM

記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか? ブラウザでのパフォーマンスのためにJavaScriptコードを最適化するにはどうすればよいですか? Mar 18, 2025 pm 03:14 PM

この記事では、ブラウザでJavaScriptのパフォーマンスを最適化するための戦略について説明し、実行時間の短縮、ページの負荷速度への影響を最小限に抑えることに焦点を当てています。

フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? フロントエンドのサーマルペーパーレシートのために文字化けしたコード印刷に遭遇した場合はどうすればよいですか? Apr 04, 2025 pm 02:42 PM

フロントエンドのサーマルペーパーチケット印刷のためのよくある質問とソリューションフロントエンド開発におけるチケット印刷は、一般的な要件です。しかし、多くの開発者が実装しています...

ブラウザ開発者ツールを使用してJavaScriptコードを効果的にデバッグするにはどうすればよいですか? ブラウザ開発者ツールを使用してJavaScriptコードを効果的にデバッグするにはどうすればよいですか? Mar 18, 2025 pm 03:16 PM

この記事では、ブラウザ開発者ツールを使用した効果的なJavaScriptデバッグについて説明し、ブレークポイントの設定、コンソールの使用、パフォーマンスの分析に焦点を当てています。

誰がより多くのPythonまたはJavaScriptを支払われますか? 誰がより多くのPythonまたはJavaScriptを支払われますか? Apr 04, 2025 am 12:09 AM

スキルや業界のニーズに応じて、PythonおよびJavaScript開発者には絶対的な給与はありません。 1. Pythonは、データサイエンスと機械学習でさらに支払われる場合があります。 2。JavaScriptは、フロントエンドとフルスタックの開発に大きな需要があり、その給与もかなりです。 3。影響要因には、経験、地理的位置、会社の規模、特定のスキルが含まれます。

ソースマップを使用して、マイナイドJavaScriptコードをデバッグするにはどうすればよいですか? ソースマップを使用して、マイナイドJavaScriptコードをデバッグするにはどうすればよいですか? Mar 18, 2025 pm 03:17 PM

この記事では、ソースマップを使用して、元のコードにマッピングすることにより、Minified JavaScriptをデバッグする方法について説明します。ソースマップの有効化、ブレークポイントの設定、Chrome DevtoolsやWebpackなどのツールの使用について説明します。

Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Console.log出力の違い結果:なぜ2つの呼び出しが異なるのですか? Apr 04, 2025 pm 05:12 PM

Console.log出力の違いの根本原因に関する詳細な議論。この記事では、Console.log関数の出力結果の違いをコードの一部で分析し、その背後にある理由を説明します。 �...

初心者向けのタイプスクリプト、パート2:基本データ型 初心者向けのタイプスクリプト、パート2:基本データ型 Mar 19, 2025 am 09:10 AM

エントリーレベルのタイプスクリプトチュートリアルをマスターしたら、TypeScriptをサポートするIDEで独自のコードを作成し、JavaScriptにコンパイルできるはずです。このチュートリアルは、TypeScriptのさまざまなデータ型に飛び込みます。 JavaScriptには、NULL、未定義、ブール値、数字、文字列、シンボル(ES6によって導入)とオブジェクトの7つのデータ型があります。 TypeScriptはこれに基づいてより多くのタイプを定義し、このチュートリアルではすべてを詳細に説明します。 ヌルデータ型 JavaScriptのように、Typescriptのnull

See all articles