検索
ホームページウェブフロントエンドjsチュートリアルリンクされたリストを時計回りに回転させる JavaScript プログラム

リンクされたリストを時計回りに回転させる 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 サイトの他の関連記事を参照してください。

声明
この記事はtutorialspointで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
JavaScriptの文字列文字を交換しますJavaScriptの文字列文字を交換しますMar 11, 2025 am 12:07 AM

JavaScript文字列置換法とFAQの詳細な説明 この記事では、javaScriptの文字列文字を置き換える2つの方法について説明します:内部JavaScriptコードとWebページの内部HTML。 JavaScriptコード内の文字列を交換します 最も直接的な方法は、置換()メソッドを使用することです。 str = str.replace( "find"、 "置換"); この方法は、最初の一致のみを置き換えます。すべての一致を置き換えるには、正規表現を使用して、グローバルフラグGを追加します。 str = str.replace(/fi

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

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

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

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

jQueryマトリックス効果jQueryマトリックス効果Mar 10, 2025 am 12:52 AM

マトリックスの映画効果をあなたのページにもたらしましょう!これは、有名な映画「The Matrix」に基づいたクールなJQueryプラグインです。プラグインは、映画の古典的な緑色のキャラクター効果をシミュレートし、画像を選択するだけで、プラグインはそれを数値文字で満たされたマトリックススタイルの画像に変換します。来て、それを試してみてください、それはとても面白いです! それがどのように機能するか プラグインは画像をキャンバスにロードし、ピクセルと色の値を読み取ります。 data = ctx.getimagedata(x、y、settings.greasize、settings.greasize).data プラグインは、写真の長方形の領域を巧みに読み取り、jQueryを使用して各領域の平均色を計算します。次に、使用します

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

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

シンプルなjQueryスライダーを構築する方法シンプルなjQueryスライダーを構築する方法Mar 11, 2025 am 12:19 AM

この記事では、jQueryライブラリを使用してシンプルな画像カルーセルを作成するように導きます。 jQuery上に構築されたBXSLiderライブラリを使用し、カルーセルをセットアップするために多くの構成オプションを提供します。 今日、絵のカルーセルはウェブサイトで必須の機能になっています - 1つの写真は千の言葉よりも優れています! 画像カルーセルを使用することを決定した後、次の質問はそれを作成する方法です。まず、高品質の高解像度の写真を収集する必要があります。 次に、HTMLとJavaScriptコードを使用して画像カルーセルを作成する必要があります。ウェブ上には、さまざまな方法でカルーセルを作成するのに役立つ多くのライブラリがあります。オープンソースBXSLiderライブラリを使用します。 BXSLiderライブラリはレスポンシブデザインをサポートしているため、このライブラリで構築されたカルーセルは任意のものに適合させることができます

JavaScriptによる構造マークアップの強化JavaScriptによる構造マークアップの強化Mar 10, 2025 am 12:18 AM

キーポイントJavaScriptを使用した構造的なタグ付けの強化は、ファイルサイズを削減しながら、Webページコンテンツのアクセシビリティと保守性を大幅に向上させることができます。 JavaScriptを効果的に使用して、Cite属性を使用して参照リンクを自動的にブロック参照に挿入するなど、HTML要素に機能を動的に追加できます。 JavaScriptを構造化されたタグと統合することで、ページの更新を必要としないタブパネルなどの動的なユーザーインターフェイスを作成できます。 JavaScriptの強化がWebページの基本的な機能を妨げないようにすることが重要です。 高度なJavaScriptテクノロジーを使用できます(

Angularを使用してCSVファイルをアップロードおよびダウンロードする方法Angularを使用してCSVファイルをアップロードおよびダウンロードする方法Mar 10, 2025 am 01:01 AM

データセットは、APIモデルとさまざまなビジネスプロセスの構築に非常に不可欠です。これが、CSVのインポートとエクスポートが頻繁に必要な機能である理由です。このチュートリアルでは、Angular内でCSVファイルをダウンロードおよびインポートする方法を学びます

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 Mac版

SublimeText3 Mac版

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