diff --git a/RevrseLinkedList.py b/RevrseLinkedList.py new file mode 100644 index 000000000000..d437d8aa601e --- /dev/null +++ b/RevrseLinkedList.py @@ -0,0 +1,62 @@ +# Python program to reverse a linked list +# Time Complexity : O(n) +# Space Complexity : O(n) as 'next' +# variable is getting created in each loop. + +# 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 reverse the linked list + def reverse(self): + prev = None + current = self.head + while current is not None: + next = current.next + current.next = prev + prev = current + current = next + self.head = prev + + # 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 LinkedList + def printList(self): + temp = self.head + while temp: + print(temp.data, end=" ") + temp = temp.next + + +# Driver program to test above functions +def main(): + llist = LinkedList() + llist.push(20) + llist.push(4) + llist.push(15) + llist.push(85) + + print("Given Linked List") + llist.printList() + llist.reverse() + print("\nReversed Linked List") + llist.printList() + + +if __name__ == "__main__": + main()