当前位置: 首页 > 编程笔记 >

在C ++中将单链表转换为XOR链表

盖诚
2023-03-14
本文向大家介绍在C ++中将单链表转换为XOR链表,包括了在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 ++中将单链表转换为循环链表,包括了在C ++中将单链表转换为循环链表的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将讨论将单链接列表转换为循环链接列表的程序。 为此,我们将提供一个单链表。我们的任务是获取该列表的元素,并将其转换为循环链接列表。 示例 输出结果

  • 我如何转换使用以下代码,我的二叉树到一个简单的链表。这也许可以用递归来完成。 因此,如果根为NULL,也就是,如果函数没有收到有效的指针,则返回错误消息。 如果根是叶,这是,如果左子节点和右子节点都为NULL,您必须将其添加到叶节点列表中。

  • 我创建了一个单链表函数,我的教授说,为了获得额外的学分,我们可以将其更改为双链表。我读了一些东西,比如添加一个prev_节点函数,比如这样。 然而,我不知道从那里去哪里。我知道我需要像这里一样加上一个尾巴和一个脑袋。 谁能告诉我,(不要为我做这件事),我必须做什么才能把我的链接列表变成一个双重链接列表?我知道我现在必须参考尾巴和头部,但我对如何做到这一点很困惑。

  • 我目前正在上Java课,教授告诉我们,理解链接的一个好方法是制作双向链表。我做了一个单链表,但是我很难把它转换成双向链表。所以我想知道是否有人能给我任何建议,以确保我的最后一个号码与前一个号码相连?如果前面的数字和最后一个数字连接到null。这是代码的一部分,如果你想得到更多,只要问,我会发布。 用于添加元素等的代码。这是我试图让尾部连接到最后一个数字的尝试。 下面的代码是insert函数,我需要

  • 我正在处理以下面试问题: 给定一个元素按升序排序的单链表,将其转换为高度平衡的BST。

  • 这是我为单链表提供的代码,但是我正在努力完成反向函数。这就是代码和我尝试的反向功能。我一直收到两个错误,分别是“未声明的变量:节点”和“不兼容的类型:节点无法转换为Linkedlist”。 } 还有类Node:类Node{//Public引用到下一个节点的公共Node下一个; 这是主要功能:类测试{public static void main(String args[]){//创建一个单链接列表