合并两个有序的链表

原创 2018年04月16日 19:58:28
        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;
        }


合并两个有序链表,让结果ren仍然有序

转载自: http://www.cnblogs.com/heyonggang/p/3405179.html   题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结...
  • tangaowen
  • tangaowen
  • 2016-06-06 21:52:27
  • 1050

合并两个有序链表,合并后依然有序

//合并两个有序链表,合并后依旧有序 //当第一个链表是空链表就把它和第二个链表合并,结果是第二个链表;同样,第二个链表是空表,合 并结果是第一个链表;如果两都是空链表,合并结果也是空链表...
  • Liudengdeng_
  • Liudengdeng_
  • 2017-09-28 14:24:53
  • 830

单链表操作之合并两个有序单链表---递归 and 非递归实现

问题提出: 现有无头结点有序单链表pHead1和无头结点有序单链表pHead2,要求将两个链表合并后依然有序。 如:   pHead1 为 1 3 5 7 9          pHead2 为 2 ...
  • a1414345
  • a1414345
  • 2016-09-23 21:02:54
  • 2269

JavaScript对有序链表的合并

对于将两个有序链表合并为一个有序链表的问题,严蔚敏版的《数据结构》中用到了一种经典的算法。 1.使用两个指针,分别指向两条链表中当前待比较的节点,创建一条新链表,用于存放两条链表中的节点。 2.每...
  • esir82
  • esir82
  • 2017-03-13 21:27:07
  • 735

算法题:合并两个有序的链表

题目:已知有两个有序的单链表,其头指针分别为head1和head2,实现将这两个链表合并的函数: Node* ListMerge(Node *head1,Node *head2) ...
  • JXH_123
  • JXH_123
  • 2014-08-04 16:50:56
  • 18033

剑指offer系列之15:合并两个有序的链表

题目描述:输入两个递增排序的链表,合并两个链表使合并后的链表满足单调不减。思路1:递归的方法,因为两个链表都是排序的,所以可以先比较两个链表的头结点,这样就确定了合并之后链表的第一个节点,之后再比较两...
  • ly_main
  • ly_main
  • 2016-04-11 19:53:38
  • 300

Java 非递归 和非递归方法 实现两个有序单链表的合并

Java实现两个有序链表的合并 链表结构如下: 非递归实现代码: 递归实现: 参考链接: https://discuss.leetcode.com...
  • zs5868668
  • zs5868668
  • 2016-12-09 15:50:43
  • 212

如何将两个有序链表合并成一个有序链表。

有两个带头节点的有序链表,如何把他们合成一个有序链表?(假设链表带头节点) 我们通过取出其中一条链表的头节点作为合成后的有序链表的头节点(当然,这里也可以自己重新生成一个节点来作为头节点,但是使用原...
  • nitibu
  • nitibu
  • 2015-08-11 17:22:37
  • 2354

【C++】合并两个排序的链表,要求合并后仍然是有序的

struct ListNode { int m_nKey; ListNode m_pNext; }; ListNode* merge(ListNode* pHead1, ListNode* pHe...
  • michellechouu
  • michellechouu
  • 2015-09-15 17:44:32
  • 1254

非递减合并两个有序单链表

#include #include #include using namespace std; typedef struct Node { int data; struct No...
  • Weiguang_123
  • Weiguang_123
  • 2014-04-18 00:43:47
  • 2469
收藏助手
不良信息举报
您举报文章:合并两个有序的链表
举报原因:
原因补充:

(最多只允许输入30个字)