合并俩个有序链表

谁说我不能喝 提交于 2019-12-02 11:10:36

题目:
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

在这里插入图片描述

解题思路:
1.new一个结果链表用来存放合并之后的结点。
2.同时遍历俩个链表,比较他们的值,值较小的尾插至结果链表。
3.当一个链表遍历结束,而另一个还没有遍历结束,就把另一个链表剩下的结点尾插到结果链表中。

public Node mergeTwoLists(Node l,Node h){
        Node newHead = null;
        Node last = null;

        Node cur1 = l;
        Node cur2 = h;

        while(cur1 != null && cur2 != null){
            if(cur1.val <= cur2.val){
                //尾插
                Node next = cur1.next;
                if(newHead == null){
                    newHead = cur1;
                }else{
                    last.next = cur1;
                }
                last = cur1;
                cur1 = next;
            }else{
                Node next = cur2.next;
                if(newHead == null){
                    newHead = cur2;
                }else{
                    last.next = cur2;
                }
                last = cur2;
                cur2 = next;
            }
        }//此循环结束说明有一个链表已遍历结束

        //某一链表遍历结束,将剩下的链表全部尾插至结果链表
        if(cur1 == null){
            last.next = cur2;
        }else{
            last.next = cur1;
        }

        return newHead;
        
    }
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!