目次
このためのさまざまな入出力シナリオを見てみましょう -
次のプログラムで使用されるメソッドは次のとおりです
出力
上記のコードを実行すると、次の出力が生成されます
ホームページ バックエンド開発 C++ 再帰的メソッドを使用して、C++ で最後のリンク リストから n 番目のノードを検索します。

再帰的メソッドを使用して、C++ で最後のリンク リストから n 番目のノードを検索します。

Sep 15, 2023 pm 05:53 PM
リンクされたリスト 再帰的メソッド 最後からn番目のノード

再帰的メソッドを使用して、C++ で最後のリンク リストから n 番目のノードを検索します。

単一リンクリストと入力として正の整数 N を与えます。目標は、再帰を使用して、指定されたリストの末尾から N 番目のノードを見つけることです。入力リストにノード a → b → c → d → e → f があり、N が 4 の場合、最後から 4 番目のノードは c になります。

最初にリスト内の最後のノードまで走査し、再帰的 (バックトラッキング) 増分カウントから戻るときに実行します。 count が N に等しい場合、現在のノードへのポインタが結果として返されます。

このためのさまざまな入出力シナリオを見てみましょう -

入力- リスト: - 1 → 5 → 7 → 12 → 2 → 96 → 33 N= 3

出力- 最後から N 番目のノードは: 2

説明- 3 番目のノードは 2 です。

入力- リスト: - 12 → 53 → 8 → 19 → 20 →96 → 33 N=8 p>

出力- ノードは存在する 。

説明 - リストには 7 つのノードしかないため、下から 8 番目のノードは存在できません。

次のプログラムで使用されるメソッドは次のとおりです

このアプローチでは、最初に再帰を使用してリストの最後に到達し、バックトラック中に静的カウント変数をインクリメントします。 count が入力 N と等しくなると、現在のノード ポインタが返されます。

  • int データ部分を持つ構造体 Node を取得し、次のポインターとして Node を使用します。

    • Node 構造と int データ部分を採用します。 p>

    • 関数 addtohead(Node** head, int data) は、head にノードを追加し、一方向リンク リストを作成するために使用されます。

    • 上記の関数を使用して、先頭を最初のノードへのポインターとして、一方向リンク リストを作成します。
    • #関数 display(Node* head) は、リンク リストを先頭から出力するために使用されます。

    • N を正の整数として設定します。

    • 関数 findNode(Node* head, int n1) は、head と n1 へのポインタを取得し、下から n1 番目のノードが見つかったときに結果を出力します。

    • blast を最後から n1 番目のノードへのポインターとして使用します。

    • searchNthLast(head, n1, &nlast) を呼び出してノードを見つけます。

    • 関数 searchNthLast(Node* head, int n1, Node** nlast) は、リンク リストの最後から n1 番目の最後のノードへのポインタを返します。head は最初のノードです。

    • 静的なカウント変数を使用します。

    • head が NULL の場合、何も返されません。
    • tmp=head->next を取得します。

    • searchNthLast(tmp, n1, nlast) を呼び出して、最後のノードまで再帰的に走査します。

    • 次に、カウントに 1 を加えます。

    • #count が n1 に等しくなった場合は、*nlast=head を設定します。
    • 最後に、nlast が指すノードの値を結果として出力します。
    #include <bits/stdc++.h>
    using namespace std;
    struct Node {
       int data;
       Node* next;
    };
    void addtohead(Node** head, int data){
       Node* nodex = new Node;
       nodex->data = data;
       nodex->next = (*head);
       (*head) = nodex;
    }
    void searchNthLast(Node* head, int n1, Node** nlast){
       static int count=0;
       if (head==NULL){
          return;
       }
       Node* tmp=head->next;
       searchNthLast(tmp, n1, nlast);
       count = count + 1;
       if (count == n1){
          *nlast = head;
       }
    }
    void findNode(Node* head, int n1){
       Node* nlast = NULL;
       searchNthLast(head, n1, &nlast);
       if (nlast == NULL){
          cout << "Node does not exists";
       }
       else{
          cout << "Nth Node from the last is: "<< nlast->data;
       }
    }
    void display(Node* head){
       Node* curr = head;
       if (curr != NULL){
          cout<<curr->data<<" ";
          display(curr->next);
       }
    }
    int main(){
       Node* head = NULL;
       addtohead(&head, 20);
       addtohead(&head, 12);
       addtohead(&head, 15);
       addtohead(&head, 8);
       addtohead(&head, 10);
       addtohead(&head, 4);
       addtohead(&head, 5);
       int N = 2;
       cout<<"Linked list is :"<<endl;
       display(head);
       cout<<endl;
       findNode(head, N);
       return 0;
    }
    ログイン後にコピー

    出力

    上記のコードを実行すると、次の出力が生成されます

    Linked list is :
    5 4 10 8 15 12 20
    Nth Node from the last is: 12
    ログイン後にコピー

以上が再帰的メソッドを使用して、C++ で最後のリンク リストから n 番目のノードを検索します。の詳細内容です。詳細については、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)

再帰的メソッドを使用して、C++ で最後のリンク リストから n 番目のノードを検索します。 再帰的メソッドを使用して、C++ で最後のリンク リストから n 番目のノードを検索します。 Sep 15, 2023 pm 05:53 PM

単一リンクされたリストと入力として正の整数 N が与えられます。目標は、再帰を使用して、指定されたリストの末尾から N 番目のノードを見つけることです。入力リストにノード a→b→c→d→e→f があり、N が 4 の場合、最後から 4 番目のノードは c になります。まず、リスト内の最後のノードまでトラバースし、再帰的 (バックトラッキング) 増分カウントから戻るときにスキャンします。 count が N に等しい場合、現在のノードへのポインタが結果として返されます。このためのさまざまな入出力シナリオを見てみましょう - 入力 - リスト: -1→5→7→12→2→96→33N=3 出力 - 最後から N 番目のノードは: 2 説明 - 3 番目のノードは 2 です。入力 - リスト: -12→53→8→19→20→96→33N=8 出力 - ノードが存在しません

PHP SPL データ構造: プロジェクトにスピードと柔軟性をもたらします PHP SPL データ構造: プロジェクトにスピードと柔軟性をもたらします Feb 19, 2024 pm 11:00 PM

PHPSPL データ構造ライブラリの概要 PHPSPL (標準 PHP ライブラリ) データ構造ライブラリには、さまざまなデータ構造を保存および操作するためのクラスとインターフェイスのセットが含まれています。これらのデータ構造には、配列、リンク リスト、スタック、キュー、セットが含まれており、それぞれがデータを操作するためのメソッドとプロパティの特定のセットを提供します。配列 PHP では、配列は一連の要素を格納する順序付けされたコレクションです。 SPL 配列クラスは、ソート、フィルタリング、マッピングなどのネイティブ PHP 配列の拡張機能を提供します。 SPL 配列クラスの使用例を次に示します。 useSplArrayObject;$array=newArrayObject(["foo","bar","baz"]);$array

PHP 配列とリンク リストのアルゴリズム時間計算量の比較 PHP 配列とリンク リストのアルゴリズム時間計算量の比較 May 07, 2024 pm 01:54 PM

配列とリンク リストのアルゴリズムの時間計算量の比較: 配列 O(1) へのアクセス、リンク リスト O(n)、配列 O(1) の挿入、配列 O(1) の削除。 )、リンク リスト O(n) (n); 検索配列 O(n)、リンク リスト O(n)。

リンクリストで表される数値に 1 を加算します。 リンクリストで表される数値に 1 を加算します。 Aug 29, 2023 pm 09:17 PM

数値のリンク リスト表現は次のように提供されます。リンク リストのすべてのノードは、数値の 1 桁とみなされます。ノードは、リンク リストの最初の要素が数値の最上位桁を保持し、リンク リストの最後の要素が数値の最下位桁を保持するように数値を格納します。たとえば、数値 202345 は、リンク リストでは (2->0->2->3->4->5) として表されます。数値を表すこのリンク リストに 1 を追加するには、リスト内の最下位ビットの値をチェックする必要があります。 9 より小さい場合は問題ありませんが、それ以外の場合はコードによって次の番号などが変更されます。次に、これを行う方法を理解するための例を見てみましょう。1999 年は (1->9->9->9) として表され、1 を追加すると変更されます。

PHP データ構造: リンク リストの魅力、動的なデータ構成の探求 PHP データ構造: リンク リストの魅力、動的なデータ構成の探求 Jun 04, 2024 pm 12:53 PM

リンク リストは、データとポインターを含む一連のノードを使用して要素を編成するデータ構造であり、大規模なデータ セットや頻繁な挿入/削除操作の処理に特に適しています。その基本コンポーネントには、ノード (データと次のノードへのポインター) とヘッド ノード (リンク リストの最初のノードを指す) が含まれます。一般的なリンク リスト操作には、追加 (末尾の挿入)、削除 (特定の値)、および走査が含まれます。

Python プログラム: リンクされたリストの最初と最後の位置に要素を追加します Python プログラム: リンクされたリストの最初と最後の位置に要素を追加します Aug 23, 2023 pm 11:17 PM

Python では、リンク リストは一連のノードで構成される線形データ構造であり、各ノードには値とリンク リスト内の次のノードへの参照が含まれます。この記事では、Python でリンク リストの最初と最後の位置に要素を追加する方法について説明します。 Python の LinkedList リンク リストは、要素のセットを格納するために使用される参照データ構造です。これはある意味配列に似ていますが、配列ではデータは連続したメモリ位置に格納されますが、リンク リストではデータはこの条件の影響を受けません。これは、データが順番にメモリに保存されるのではなく、ランダムにメモリに保存されることを意味します。これにより、どうやってできるのかという疑問が生じます

Go言語でリンクリスト操作を実装するにはどうすればよいですか? Go言語でリンクリスト操作を実装するにはどうすればよいですか? Jun 10, 2023 pm 10:55 PM

LinkedList は一連のノードで構成される一般的なデータ構造であり、各ノードにはデータ フィールド (Data) とポインター フィールド (Next) という 2 つのキー属性が含まれています。このうち、データフィールドは実際のデータを格納するために使用され、ポインタフィールドは次のノードを指します。このように、リンク リストは、さまざまなアプリケーション シナリオに適した柔軟な方法でデータを保存します。 Go 言語では、リンク リスト構造も十分にサポートされています。 Cont は Go の組み込み標準ライブラリで提供されます

Golang で書かれた高性能リンク リスト構造を作成する Golang で書かれた高性能リンク リスト構造を作成する Jan 28, 2024 am 08:01 AM

Golang は、同時実行機能とメモリ管理により、効率的なデータ構造を作成するのに最適な高性能プログラミング言語です。リンク リストは一般的なデータ構造です。ここでは、Golang を使用して効率的なリンク リスト構造を記述する方法と、具体的なコード例を紹介します。リンク リストはノードで構成される線形データ構造で、各ノードには値と次のノードへのポインタが含まれます。配列と比較したリンク リストの利点は、他の要素を移動する必要がないため、要素の挿入と削除がより効率的であることです。ただし、チェーンは、

See all articles