単一リンクリストをC++のXORリンクリストに変換します
このチュートリアルでは、単一リンクリストをXORリンクリストに変換するプログラムについて説明します。
このために、単一リンクリストが提供されます。私たちのタスクは、そのリストの要素を取得して、XORリンクリストに変換することです。
例
#include <bits/stdc++.h>
using namespace std;
//node structure of linked list
struct Node {
int data;
struct Node* next;
};
//creation of new node
Node* newNode(int data){
Node* temp = new Node;
temp->data = data;
temp->next = NULL;
return temp;
}
//printing singly linked list
void print(Node* head){
while (head) {
cout << head->data << " ";
head = head->next;
}
cout << endl;
}
//calculating XORed values
Node* XOR(Node* a, Node* b){
return (Node*)((uintptr_t)(a) ^ (uintptr_t)(b));
}
//converting the singly linked list
void convert(Node* head){
Node* curr = head;
Node* prev = NULL;
Node* next = curr->next;
while (curr) {
next = curr->next;
curr->next = XOR(prev, next);
prev = curr;
curr = next;
}
}
//printing the XORed linked list
void printXOR(Node* head){
Node* curr = head;
Node* prev = NULL;
while (curr) {
cout << curr->data << " ";
Node* temp = curr;
curr = XOR(prev, curr->next);
prev = temp;
}
cout << endl;
}
int main(){
Node* head = newNode(1);
head->next = newNode(2);
head->next->next = newNode(3);
head->next->next->next = newNode(4);
cout << "Before Conversion : " << endl;
print(head);
convert(head);
cout << "After Conversion : " << endl;
printXOR(head);
return 0;
} 出力
Before Conversion : 1 2 3 4 After Conversion : 1 2 3 4
-
二分探索木をC++の単一リンクリストに変換するプログラム?
二分木があるとしましょう。これを(所定の場所にある)単一リンクリストに変換する必要があります。 したがって、入力が次のような場合 その場合、出力は次のようになります これを解決するには、次の手順に従います。 ser prev:=null rootを入力として受け取る再帰関数solve()を定義します。 ルートがnullの場合は、を返します。 解決(ルートの権利) 解決(ルートの左側) ルートの右側:=prev、ルートの左側:=null 前:=ルート 理解を深めるために、次の実装を見てみましょう。 例 #include <
-
C++の単一リンクリスト内のすべての素数ノードの積
n個のノードが与えられ、タスクはリンクリスト内のすべての素数ノードの積を出力することです。プライムノードは、カウント位置としてプライム値を持つノードです。 入力 10 20 30 40 50 出力 4,00,000 説明 − 10はプライムではないインデックス値1にあるため、スキップされます。素数であるインデックス値2で20に移動すると、考慮されます。同様に、40と50はプライムインデックスの場所にあります。 製品 − 20 * 40 * 50 =4,00,000 上の図で、赤い色のノードはプライムノードを表しています 以下で使用するアプローチは次のとおりです 一時