Radeen10-_

Data Structure (Swap Nodes)

Oct 16th, 2020 (edited)
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.74 KB | None | 0 0
  1. class Node:
  2.     def __init__(self,data):
  3.         self.data=data
  4.         self.next= None
  5.  
  6.  
  7.  
  8. class linked_list:
  9.     def __init__(self):
  10.         self.head = None
  11.     def print_node(self):
  12.         current_node=self.head
  13.         while current_node:
  14.             print(current_node.data)
  15.             current_node=current_node.next
  16.     def append(self,data):
  17.         new_node=Node(data)
  18.         if self.head is None:
  19.             self.head=new_node
  20.             return
  21.  
  22.         last_node=self.head
  23.         while last_node.next:
  24.             last_node=last_node.next
  25.         last_node.next=new_node
  26.  
  27.  
  28.  
  29.     def swap_nodes(self,key1,key2):
  30.         if key1==key2:
  31.             return
  32.         previous_node1=None
  33.         current_node1=self.head
  34.         while current_node1 and current_node1!= key1:
  35.             previous_node1=current_node1
  36.             current_node1=current_node1.next
  37.  
  38.         previous_node2= None
  39.         current_node2=self.head
  40.         while current_node2 and current_node2!=key2:
  41.             previous_node2=current_node2
  42.             current_node2=current_node2.next
  43.  
  44.         if not current_node1 or not current_node2:
  45.             return
  46.         if previous_node1:
  47.             previous_node1.next=current_node2
  48.         else:
  49.             self.head=current_node2
  50.         if previous_node2:
  51.             previous_node2.next=current_node1
  52.         else:
  53.             self.head=current_node1
  54.  
  55.         current_node1.next,current_node2.next=current_node2.next,current_node1.next
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62. llistt=linked_list()
  63. llistt.append('a')
  64. llistt.append("b")
  65. llistt.append('c')
  66. llistt.append("d")
  67.  
  68.  
  69. #llistt.delete_middle_node("b")
  70. #llistt.print_node()
  71. #print(llistt.len_iterative())
  72. llistt.swap_nodes("a","b")
  73. llistt.print_node()
Add Comment
Please, Sign In to add comment