C++の2つの二重リンクリストで共通ノードの数を検索します
2つのネストされたループを使用して、両方のリストをリストの最後までトラバースします。リスト内のすべてのノードについて、2番目のリストのいずれかのノードと一致するかどうかを確認します。一致するものが見つかった場合は、カウンターを増やし、最後にカウントを返します。
例
#include<iostream>
using namespace std;
class Node {
public:
int data;
Node *back, *front;
};
void append(Node** start, int new_data) {
Node* new_node = new Node;
new_node->data = new_data;
new_node->back = NULL;
new_node->front = (*start);
if ((*start) != NULL)
(*start)->back = new_node;
(*start) = new_node;
}
int countCommonNodes(Node** start1, Node** start2) {
Node* ptr = *start1;
Node* ptr1 = *start2;
int count = 0;
while (ptr != NULL) {
while (ptr1 != NULL) {
if (ptr->data == ptr1->data) {
count++;
break;
}
ptr1 = ptr1->front;
}
ptr1 = *start2;
ptr = ptr->front;
}
return count;
}
int main() {
Node* first = NULL;
Node* second = NULL;
append(&first, 15);
append(&first, 16);
append(&first, 10);
append(&first, 9);
append(&first, 7);
append(&first, 17);
append(&second, 15);
append(&second, 16);
append(&second, 40);
append(&second, 6);
append(&second, 9);
cout << "Number of common nodes:" << countCommonNodes(&first, &second);
} 出力
Number of common nodes:3
-
C++の循環リンクリストでノードをカウントします
ノードを含む循環リンクリストが与えられ、タスクは循環リンクリストに存在するノードの数を計算することです。 循環リンクリストは、最初の要素が最後の要素を指し、最後の要素が最初の要素を指すリンクリストのバリエーションです。単一リンクリストと二重リンクリストの両方を循環リンクリストにすることができます。 以下のプログラムでは、単一リンクリストを循環リンクリストとして実装し、その中のノード数を計算しています。 例 Input − nodes-: 20, 1, 2, 3, 4, 5 Output − count of nodes are-: 6 Input &minus
-
C++で二分木の2つのノード間の距離を見つける
ノードが少ない二分木があると考えてください。 2つのノードuとvの間の距離を見つける必要があります。ツリーが次のようになっていると仮定します- これで、(4、6)=4の間の距離、パスの長さは4、(5、8)の間の長さ=5などになります。 この問題を解決するために、LCA(Lowest Common Ancestor)を見つけてから、LCAから2つのノードまでの距離を計算します。 例 #include<iostream> using namespace std; class Node { public: in