public static Node<int> MegeLink(Node<int> node1, Node<int> node2)
{
Node<int> head = null;
Node<int> mask = null;
//先在两个链表中找到一个头节点存起了 往下走
if (node1.Data < node2.Data)
{
head = node1;
node1 = node1.Next;
}
else if (node1.Data > node2.Data)
{
head = node2;
node2 = node2.Next;
}
else
{
//如果两个头节点相等 两个都往下走 去除重复
head = node1;
node1 = node1.Next;
node2 = node2.Next;
}
mask = head;
while (node1 != null && node2 != null)
{
//判断node1是否和mask相等 相等继续往下走
if (mask.Data == node1.Data && mask.Data == node2.Data)
{
node1 = node1.Next;
node2 = node2.Next;
}
else if (mask.Data == node1.Data)
{
node1 = node1.Next;
}
else if (mask.Data == node2.Data)
{
node2 = node2.Next;
}
else
{
if (node1.Data < node2.Data)
{
mask.Next = node1;
node1 = node1.Next;
}
else if (node1.Data > node2.Data)
{
mask.Next = node2;
node2 = node2.Next;
}
else
{
mask.Next = node1;
node1 = node1.Next;
node2 = node2.Next;
}
mask = mask.Next;
}
}
if (node1 != null)
{
mask.Next = node1;
}
if (node2 != null)
{
mask.Next = node2;
}
return head;
}