OneCompiler

Intersection of 2 Linked List

146

class Node{
constructor(a)
{
this.value = a;
this.next = undefined;

}
}
let insertion_start = function(head,value)
{
new_node = new Node(value)
new_node.next = head;
return new_node;
}
let insertion_end = function(head,value)
{
new_node = new Node(value);
let temp = head;
while(temp.next!=null)
{
temp = temp.next;
}
temp.next = new_node;
new_node.next = null;
}
let insertion_mid = function(head,n,value)
{
new_node = new Node(value);
let temp = head;
while(n-1>0)
{
temp= temp.next;
n--;
}
let x = temp.next;
temp.next = new_node;
new_node.next = x;
}
let display = function(head)
{
let temp = head;
while(temp)
{
console.log(temp.value);
temp= temp.next;
}
}
let intersection = function(headA,headB,head)
{
let temp1 = headA;
let temp2 = headB;
while(temp1.next)
{
temp1= temp1.next;
}
while(temp2.next)
{
temp2 = temp2.next;
}
temp1.next = head;
temp2.next = head;
}
var getIntersectionNode = function(headA, headB) {
let a = headA;
let b = headB;
let counta =0;
let countb =0;
while(a)
{
counta++;
a = a.next;
}
while(b)
{
countb++;
b= b.next;
}
let temp1 = headA;
let temp2 = headB;
if(counta>countb)
{
let diff = counta-countb;
while(diff>0)
{
temp1 = temp1.next;
diff--;
}
}
else if(countb>counta)
{
let diff = countb-counta;
while(diff>0)
{
temp2 = temp2.next;
diff--;
}
}
while(temp1 && temp2)
{
if(temp1 == temp2)
{
return temp1;
}
else
{
temp1 = temp1.next;
temp2 = temp2.next;
}
}
return null;
};

headA = new Node(1);
headB = new Node(1);
head = new Node(4);
insertion_end(headA,3)
console.log(headA)
console.log(headB)
insertion_end(head,5);
insertion_end(head,6);
intersection(headA,headB,head);
console.log(headA)
console.log(headB)
display(headA)
console.log("headb");
display(headB)
console.log("interserction point")
console.log(getIntersectionNode(headA,headB))