合并两个有序的链表

        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;
        }


阅读更多
文章标签: C#
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭