Open in App
Not now

# Python Program For Pairwise Swapping Elements Of A Given Linked List

• Last Updated : 18 Dec, 2021

Given a singly linked list, write a function to swap elements pairwise.

```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 ```

For example, if the linked list is 1->2->3->4->5 then the function should change it to 2->1->4->3->5, and if the linked list is then the function should change it to.

METHOD (Iterative):
Start from the head node and traverse the list. While traversing swap data of each node with its next node’s data.
Below is the implementation of the above approach:

## Python

 `# Python program to swap the elements of ` `# linked list pairwise`   `# Node class` `class` `Node:`   `    ``# Constructor to initialize the` `    ``# node object` `    ``def` `__init__(``self``, data):` `        ``self``.data ``=` `data` `        ``self``.``next` `=` `None`   `class` `LinkedList:`   `    ``# Function to initialize head` `    ``def` `__init__(``self``):` `        ``self``.head ``=` `None`   `    ``# Function to pairwise swap elements` `    ``# of a linked list` `    ``def` `pairwiseSwap(``self``):` `        ``temp ``=` `self``.head`   `        ``# There are no nodes in a ` `        ``# linked list` `        ``if` `temp ``is` `None``:` `            ``return`   `        ``# Traverse further only if there ` `        ``# are at least two left` `        ``while``(temp ``and` `temp.``next``):`   `            ``# If both nodes are same,` `            ``# no need to swap data` `            ``if``(temp.data !``=` `temp.``next``.data):`   `                ``# Swap data of node with its ` `                ``# next node's data` `                ``temp.data, temp.``next``.data ``=` `temp.``next``.data, temp.data`   `            ``# Move temp by 2 to the next pair` `            ``temp ``=` `temp.``next``.``next`   `    ``# Function to insert a new node at the ` `    ``# beginning` `    ``def` `push(``self``, new_data):` `        ``new_node ``=` `Node(new_data)` `        ``new_node.``next` `=` `self``.head` `        ``self``.head ``=` `new_node`   `    ``# Utility function to print the linked ` `    ``# LinkedList` `    ``def` `printList(``self``):` `        ``temp ``=` `self``.head` `        ``while``(temp):` `            ``print` `temp.data,` `            ``temp ``=` `temp.``next`   `# Driver code` `llist ``=` `LinkedList()` `llist.push(``5``)` `llist.push(``4``)` `llist.push(``3``)` `llist.push(``2``)` `llist.push(``1``)`   `print` `"Linked list before calling pairWiseSwap() "` `llist.printList()`   `llist.pairwiseSwap()`   `print` `"Linked list after calling pairWiseSwap()"` `llist.printList()`   `# This code is contributed by Nikhil Kumar Singh(nickzuck_007)`

Output:

```Linked list before calling pairWiseSwap()
1 2 3 4 5