diff --git a/linked_list/ReverseLinkedList.java b/linked_list/ReverseLinkedList.java new file mode 100644 index 00000000..26f7d005 --- /dev/null +++ b/linked_list/ReverseLinkedList.java @@ -0,0 +1,70 @@ +class Node { + int data; + Node next; + + Node(int data) { + this.data = data; + this.next = null; + } +} + +class LinkedList { + Node head; + + LinkedList() { + head = null; + } + + void insert(int data) { + Node newNode = new Node(data); + if (head == null) { + head = newNode; + } else { + Node current = head; + while (current.next != null) { + current = current.next; + } + current.next = newNode; + } + } + + void reverse() { + Node prev = null; + Node current = head; + Node next = null; + while (current != null) { + next = current.next; // Store the next node + current.next = prev; // Reverse the current node's pointer + prev = current; // Move prev to the current node + current = next; // Move current to the next node + } + head = prev; // The new head is the last node (prev) + } + + void display() { + Node current = head; + while (current != null) { + System.out.print(current.data + " -> "); + current = current.next; + } + System.out.println("null"); + } +} + +public class ReverseLinkedList { + public static void main(String[] args) { + LinkedList list = new LinkedList(); + list.insert(1); + list.insert(2); + list.insert(3); + list.insert(4); + + System.out.println("Original Linked List:"); + list.display(); + + list.reverse(); + + System.out.println("Reversed Linked List:"); + list.display(); + } +}