Problem Statement
Clone a linked list with next and random pointer | Practice | GeeksforGeeks
Pattern:
Solution
Node copyList(Node head) {
Node curr = head;
// insert node
while(curr!=null) {
Node newNode = new Node(curr.data);
newNode.next = curr.next;
curr.next = newNode;
curr = newNode.next;
}
// point arb
curr = head;
while(curr!=null)
{
if(curr.arb!=null)
curr.next.arb = curr.arb.next;
curr = curr.next.next;
}
// separate both LL
Node clonedHead = head.next, cloned = clonedHead;
curr = head;
while (curr != null) {
curr.next = curr.next.next;
curr = curr.next;
if(cloned.next != null) {
cloned.next = cloned.next.next;
cloned = cloned.next;
}
}
return clonedHead;
}