単一リンクリストを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 上の図で、赤い色のノードはプライムノードを表しています 以下で使用するアプローチは次のとおりです 一時