C++のリンクリストでモジュラーノードを検索します
この問題では、単一連結リストLLと数kが与えられます。私たちのタスクは、リンクリストからモジュラーノードを見つけることです。
問題の説明 −インデックスがkで割り切れるリンクリストの最後のノード、つまりi%k==0を見つける必要があります。
問題を理解するために例を見てみましょう
入力
ll = 3 -> 1 -> 9 -> 6 -> 8 -> 2, k = 4
出力
6
説明
The element 6 has index 4, which is divisible by 4.
ソリューションアプローチ
この問題の簡単な解決策は、リンクリストの要素をカウントし、モジュラーノード(つまり、i%k ==0のノード)を格納するカウンターを作成し、nまでの条件を満たすすべての値を更新することです。
ソリューションの動作を説明するプログラム
例
#include <iostream> using namespace std; struct Node { int data; Node* next; }; Node* newNode(int data) { Node* new_node = new Node; new_node->data = data; new_node->next = NULL; return new_node; } Node* findModularNodeLL(Node* head, int k) { if (k <= 0 || head == NULL) return NULL; int i = 1; Node* modNode = NULL; for (Node* currNode = head; currNode != NULL; currNode = currNode->next) { if (i % k == 0) modNode = currNode; i++; } return modNode; } int main() { Node* head = newNode(3); head->next = newNode(1); head->next->next = newNode(9); head->next->next->next = newNode(6); head->next->next->next->next = newNode(8); head->next->next->next->next->next = newNode(2); int k = 4; Node* modularNode = findModularNodeLL(head, k); cout<<"The Modular node of linked list is "; if (modularNode != NULL) cout<<modularNode->data; else cout<<"Not found!"; return 0; }
出力
The Modular node of linked list is 6
-
C++のリンクリストでループの長さを見つける
この問題では、ループを含む可能性のあるリンクリストが表示されます。私たちのタスクは、リンクリストでループの長さを見つけることです。 問題の説明: ループが含まれている場合はループ内のノード数をカウントする必要があります。それ以外の場合は-1を返します。 問題を理解するために例を見てみましょう。 入力: リンクリスト: 出力: 8 ソリューションアプローチ この問題を解決するには、まずリンクリストにループが含まれているかどうかを確認する必要があります。これを確認するためのアプローチは、フロイドの循環検出アルゴリズムを使用することです。 フロイドの循環検出アルゴリズム
-
C++で二重リンクリストのサイズを見つけるプログラム
この問題では、二重にリンクされたリストが与えられます。私たちのタスクは、C++で二重リンクリストのサイズを見つけるプログラムを作成することです。 二重リンクリストは特殊なタイプのリンクリストであり、単一リンクリストと比較して、順方向と逆方向の両方の方法で簡単にナビゲーションできます。以下は、二重リンクリストの概念を理解するための重要な用語です。 リンク-リンクリストの各リンクには、要素と呼ばれるデータを格納できます。 次へ-リンクリストの各リンクには、次と呼ばれる次のリンクへのリンクが含まれています。 前-リンクリストの各リンクには、前と呼ばれる前のリンクへのリンクが含ま