Dada una lista enlazada individualmente, escriba una función para intercambiar elementos por pares.
Input: 1->2->3->4->5->6->NULL
Output: 2->1->4->3->6->5->NULL Input: 1->2->3->4->5->NULL
Output: 2->1->4->3->5->NULL Input: 1->NULL
Output: 1->NULL
Por ejemplo, si la lista enlazada es 1->2->3->4->5 entonces la función debería cambiarla a 2->1->4->3->5, y si la lista enlazada es entonces el la función debería cambiarlo a.
MÉTODO (Iterativo):
Comience desde el Node principal y recorra la lista. Al atravesar los datos de intercambio de cada Node con los datos de su siguiente Node.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program to pairwise swap elements // in a given linked list #include <bits/stdc++.h> using namespace std; // A linked list node class Node { public: int data; Node* next; }; /* Function to pairwise swap elements of a linked list */ void pairWiseSwap(Node* head) { Node* temp = head; /* Traverse further only if there are at-least two nodes left */ while (temp != NULL && temp->next != NULL) { /* Swap data of node with its next node's data */ swap(temp->data, temp->next->data); // Move temp by 2 for the next pair temp = temp->next->next; } } /* Function to add a node at the beginning of Linked List */ void push(Node** head_ref, int new_data) { // Allocate node Node* new_node = new Node(); // Put in the data new_node->data = new_data; // Link the old list off the // new node new_node->next = (*head_ref); /* Move the head to point to the new node */ (*head_ref) = new_node; } /* Function to print nodes in a given linked list */ void printList(Node* node) { while (node != NULL) { cout << node->data << " "; node = node->next; } } // Driver Code int main() { Node* start = NULL; /* The constructed linked list is: 1->2->3->4->5 */ push(&start, 5); push(&start, 4); push(&start, 3); push(&start, 2); push(&start, 1); cout << "Linked list " << "before calling pairWiseSwap()"; printList(start); pairWiseSwap(start); cout << "Linked list " << "after calling pairWiseSwap()"; printList(start); return 0; } // This code is contributed by rathbhupendra
Producción:
Linked list before calling pairWiseSwap() 1 2 3 4 5 Linked list after calling pairWiseSwap() 2 1 4 3 5
Complejidad de tiempo: O(n)
Consulte el artículo completo sobre los elementos de intercambio por pares de una lista vinculada dada para obtener más detalles.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA