合并两个有序的链表

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值