C# codes as below:
class Link
{
public Node FirstNode{get;set;}
public static Link MergeSortedLink(Link firstLink, Link secondLink)
{
Node currentNode1 = firstLink.FirstNode;
Node currentNode2 = secondLink.FirstNode;
if (currentNode1.Value < currentNode2.Value)
{
Node node =currentNode1.Next;
currentNode1.Next=currentNode2;
currentNode2 = currentNode1;
currentNode1 = node;
secondLink.FirstNode = currentNode2;
}
while (currentNode2.Next != null)
{
if (currentNode1 == null)
break;
if (currentNode1.Value < currentNode2.Next.Value)
{
Node node1 = currentNode1.Next;
Node node2 = currentNode2.Next;
currentNode2.Next = currentNode1;
currentNode1.Next = node2;
currentNode2 = currentNode1;
currentNode1 = node1;
}
else
{
currentNode2 = currentNode2.Next;
}
}
if (currentNode1 != null)
{
currentNode2.Next = currentNode1;
}
return secondLink;
}
public Link(Node firstNode)
{
FirstNode = firstNode;
}
}
class Node
{
public Node Next { get; set; }
public int Value { get; set; }
public Node(int value)
{
Value = value;
}
}