Par de elementos de intercambio Wise en una lista enlazada utilizando programa C ++

En este artículo, se discuten cómo emparejar los elementos de intercambio sabias en una lista enlazada ? Este artículo contiene planteamiento del problema, la explicación, algoritmo, la aplicación C ++ y de salida.

Dada una lista de enlace simple, escribir una función a los elementos de intercambio por parejas.

Explicación y ejemplo:

If a linked list is 1 → 2 → 3 → 4 → 5 
Then the output will be: 2 → 1 → 4 → 3 → 5
If the linked list is 1 → 2 → 3 → 4 → 5 → 6
Then the output will be: 2 → 1 → 4 → 3 → 6 → 5

Algoritmo:

Para resolver este problema, en primer lugar iterar la lista de la cabeza y tomar dos nodos consecutivos de eso y cambiar los valores clave de ellos. Ir class próximos dos nodos consecutivos. Si sólo hay un nodo de la izquierda y luego mantenerlo misma.

while (curr is not NULL  &&curr->next is not NULL)
temp=curr->data;
curr->data=curr->next->data;
curr->next->data=temp;
curr=curr->next->next;
End While

implementación en C ++:

#include <bits/stdc++.h>
using namespace std;
struct node{
int data;
node* next;
};
//Create a new node
struct node* create_node(int x){
struct node* temp= new node;
temp->data=x;
temp->next=NULL;
return temp;
}
//Enter the node into the linked list
void push(node** head,int x){
struct node* store=create_node(x);
if(*head==NULL){
*head =store;
return;
}
struct node* temp=*head;
while(temp->next){
temp=temp->next;
}
temp->next=store;
}
//Reverse the linked list
struct node* swap(node* head){
if(head==NULL){
return NULL;
}
struct node* curr=head;
while(curr && curr->next){
int temp=curr->data;
curr->data=curr->next->data;
curr->next->data=temp;
curr=curr->next->next;
}
return head;
}
//Print the list
void print(node* head){
struct node* temp=head;
while(temp){
cout<<temp->data<<" ";
temp=temp->next;
}
}
int main()
{
struct node* l=NULL;
push(&l,1);
push(&l,2);
push(&l,3);
push(&l,4);
push(&l,5);
push(&l,6);
cout<<"Before the swap operation"<<endl;
print(l);
l=swap(l);
cout<<"nAfter the swap operation"<<endl;
print(l);
return 0;
}

salida

Before the swap operation
1 2 3 4 5 6
After the swap operation
2 1 4 3 6 5


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *