C++のリンクリスト内のノードの小さい要素の合計
この問題では、2つの値と1つのポインターで構成されるノードを持つリンクリストが提供されます。私たちのタスクは、リンクリスト内のノードの小さな要素の合計を見つけるプログラムを作成することです。
ここで、リンクリストにはXとYという2つの要素があります。プログラムは最小のxとyを見つけます。必要な結果である、すべてのノードからの最小要素が追加されます。
入力 −
(5,2)->(7,9)->(6,3)->(36,24)->(19,26)->null
出力 −
55
説明 −
各ノードから最小のXとYを取得しましょう-
node1 - mini = 5 node2 - mini = 7 node3 - mini = 3 node4 - mini = 24 node5 - mini = 19 Sum = 55
この問題を解決するために、各ノードにアクセスしてXとYの最小値を見つけることにより、ストレートフォワードアプローチを使用します。次に、それをsum変数に追加し、ノードが終了したときにsumを返します。
アルゴリズム
初期化 −合計=0
ステップ1 −リストをトラバースし、次の手順を実行します。
ステップ1.1 −頭の最小値→Xおよび頭→Yを見つけます。
ステップ1.2 −合計に最小値を追加
ステップ2 −合計を返す、
例
アルゴリズムの動作を説明するプログラム-
#include <iostream>
using namespace std;
struct Node {
int X;
int Y;
Node* next;
};
void addNode(Node** head, int x, int y){
Node* ptr = *head;
Node* temp = new Node();
temp->X = x;
temp->Y = y;
temp->next = NULL;
if (*head == NULL)
*head = temp;
else {
while (ptr->next != NULL)
ptr = ptr->next;
ptr->next = temp;
}
}
int findMinSum(Node* head){
int sum = 0;
while (head != NULL) {
sum += min(head->X , head->Y);
head = head->next;
}
return sum;
}
int main(){
Node* head = NULL;
addNode(&head, 5, 2);
addNode(&head, 7, 9);
addNode(&head, 6, 3);
addNode(&head, 36, 24);
addNode(&head, 19, 26);
cout<<"The sum of smaller elements of nodes in Linked List is "<<findMinSum(head)<<endl;
return 0;
} 出力
The sum of smaller elements of nodes in Linked List is 55
-
C++の循環リンクリストでノードをカウントします
ノードを含む循環リンクリストが与えられ、タスクは循環リンクリストに存在するノードの数を計算することです。 循環リンクリストは、最初の要素が最後の要素を指し、最後の要素が最初の要素を指すリンクリストのバリエーションです。単一リンクリストと二重リンクリストの両方を循環リンクリストにすることができます。 以下のプログラムでは、単一リンクリストを循環リンクリストとして実装し、その中のノード数を計算しています。 例 Input − nodes-: 20, 1, 2, 3, 4, 5 Output − count of nodes are-: 6 Input &minus
-
C ++で再帰を使用して、リンクリストの代替ノードを出力します
リンクリストは、要素を連続していないメモリ位置に格納する線形データ構造です。すべての要素には、リンクリストの次の要素へのポインタが含まれています。 例 − この問題では、リンクリストが与えられ、このリンクリストの要素を印刷する必要がありますが、代替要素のみが印刷されます。問題をよりよく理解するために例を見てみましょう。 Input : 2 -> 4 -> 1 -> 67 -> 48 -> 90 Output : 2 -> 1 -> 48 説明 −リンクリストに代替要素を出力します。したがって、1番目、3番目、5番目の要素が印刷されます。