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 Linked list after calling pairWiseSwap() 2 1 4 3 5
Time complexity: O(n)
Auxiliary Space: O(1)
Please refer complete article on Pairwise swap elements of a given linked list for more details!
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!