Solution:
To check whether they joined in Y shape or not --
if ( End(List1) = = End(List2) )
// Merged
To find the node --
count1 = Size ( List1 ) ;
count2 = Size ( List2 ) ;
longList = List1 ;
smallList = List2 ;
count2 > count1 && ( swap( longList, smallList ) ) ;
for ( int i = 0; i < abs(count1 - count2); longList = longList -> next, ++i ) ;
while(longList !- null && longList != smallList )
{
longList = longList -> next ;
smallList = smallList -> next ;
}
return longList ;
To check whether they joined in Y shape or not --
if ( End(List1) = = End(List2) )
// Merged
To find the node --
count1 = Size ( List1 ) ;
count2 = Size ( List2 ) ;
longList = List1 ;
smallList = List2 ;
count2 > count1 && ( swap( longList, smallList ) ) ;
for ( int i = 0; i < abs(count1 - count2); longList = longList -> next, ++i ) ;
while(longList !- null && longList != smallList )
{
longList = longList -> next ;
smallList = smallList -> next ;
}
return longList ;
In C# -
        public LinkedListNode GetIntersectionNode(LinkedList list2)
        {
            int count1 = this.Count();
            int count2 = list2.Count();
            LinkedListNode longListNode, shortListNode;
            if (count1 >= count2)
            {
                longListNode = this.Head;
                shortListNode = list2.Head;
            }
            else
            {
                longListNode = list2.Head;
                shortListNode = this.Head;
            }
            for (int i = 0; i < Math.Abs(count1 - count2); longListNode = longListNode.Next, ++i);
            while(longListNode != null && longListNode != shortListNode)
            {
                longListNode = longListNode.Next;
                shortListNode = shortListNode.Next;
            }
            return longListNode;
        }
 
 
No comments:
Post a Comment