Home >Backend Development >C++ >Given a linked list, swap elements in the linked list in pairs

Given a linked list, swap elements in the linked list in pairs

WBOY
WBOYforward
2023-08-26 10:33:101332browse

Given a linked list, swap elements in the linked list in pairs

For example, in order to solve the problem of needing to exchange pairs of nodes that exist in the linked list and then print it

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

There are two ways to achieve a time complexity of O(N ) where N is the size of the linked list we have provided, so now we will explore both methods

Iteration method

In this method we will iterate over the linked list elements and Swap them in pairs until they reach NULL.

Example

#include <bits/stdc++.h>
using namespace std;
class Node { // node of our list
public:
    int data;
    Node* next;
};
void swapPairwise(Node* head){
    Node* temp = head;
    while (temp != NULL && temp->next != NULL) { // for pairwise swap we need to have 2 nodes hence we are checking
        swap(temp->data,
            temp->next->data); // swapping the data
        temp = temp->next->next; // going to the next pair
    }
}
void push(Node** head_ref, int new_data){ // function to push our data in list
    Node* new_node = new Node(); // creating new node
    new_node->data = new_data;
    new_node->next = (*head_ref); // head is pushed inwards
    (*head_ref) = new_node; // our new node becomes our head
}
void printList(Node* node){ // utility function to print the given linked list
    while (node != NULL) {
       cout << node->data << " ";
       node = node->next;
    }
}
int main(){
    Node* head = NULL;
    push(&head, 5);
    push(&head, 4);
    push(&head, 3);
    push(&head, 2);
    push(&head, 1);
    cout << "Linked list before\n";
    printList(head);
    swapPairwise(head);
    cout << "\nLinked list after\n";
    printList(head);
    return 0;
}

Output

Linked list before
1 2 3 4 5
Linked list after
2 1 4 3 5

We will use the same formula in the following method but we will iterate through recursion.

Recursive method

In this method we implement the same logic through recursion.

Example

#include <bits/stdc++.h>
using namespace std;
class Node { // node of our list
public:
    int data;
    Node* next;
};
void swapPairwise(struct Node* head){
    if (head != NULL && head->next != NULL) { // same condition as our iterative
        swap(head->data, head->next->data); // swapping data
        swapPairwise(head->next->next); // moving to the next pair
    }
    return; // else return
}
void push(Node** head_ref, int new_data){ // function to push our data in list
    Node* new_node = new Node(); // creating new node
    new_node->data = new_data;
    new_node->next = (*head_ref); // head is pushed inwards
    (*head_ref) = new_node; // our new node becomes our head
}
void printList(Node* node){ // utility function to print the given linked list
    while (node != NULL) {
        cout << node->data << " ";
        node = node->next;
    }
}
int main(){
    Node* head = NULL;
    push(&head, 5);
    push(&head, 4);
    push(&head, 3);
    push(&head, 2);
    push(&head, 1);
    cout << "Linked list before\n";
    printList(head);
    swapPairwise(head);
    cout << "\nLinked list after\n";
    printList(head);
    return 0;
}

Output

Linked list before
1 2 3 4 5
Linked list after
2 1 4 3 5

Explanation of the above code

In this method, we traverse the linked list in pairs. Now when we reach a pair we swap their data and move to the next pair and this is how our program proceeds in both methods.

Conclusion

In this tutorial, we solved pairwise swapping of elements of a given linked list using recursion and iteration. We also learned the C program for this problem and the complete method (general) to solve it. We can write the same program in other languages ​​such as C, java, python and other languages. We hope you found this tutorial helpful.

The above is the detailed content of Given a linked list, swap elements in the linked list in pairs. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete