欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

合并两个有序链表为一个链表,最简单的java实现

程序员文章站 2022-07-13 17:47:36
...

现在有两个有序的链表,想把它们合成一个有序的链表。思路就是每次确定两个链表中的最小节点,然后调用递归依次往后推。

创建链表节点

 /**
 * @author David
 * @descritpion
 * @date 2019/9/29
 */
public class LinkedNode {

    private int val;

    private LinkedNode next;

    public LinkedNode(int val){
        this.val = val;
    }
    public LinkedNode(){
    }

    public int getVal() {
        return val;
    }

    public void setVal(int val) {
        this.val = val;
    }

    public LinkedNode getNext() {
        return next;
    }

    public void setNext(LinkedNode next) {
        this.next = next;
    }

}

合并方法

public static LinkedNode mergeNode(LinkedNode node1, LinkedNode node2) {
        //如果两个链表都为null,直接返回null
        if (node1 == null && node2 == null) {
            return null;
        }
        //如果链表1为null,直接返回链表2
        if (node1 == null) {
            return node2;
        }
        //如果链表2为null,直接返回链表1
        if (node2 == null) {
            return node1;
        }
        //确定当前的最小节点,然后调用递归,依次求出之后的最小节点并连接,返回
        if (node1.getVal() <= node2.getVal()) {
            node1.setNext(mergeNode(node1.getNext(), node2));
           return node1;
        } else {
            node2.setNext(mergeNode(node2.getNext(), node1));
            return node2;
        }
    }

合并

public static void main(String[] args) {
        LinkedNode node1 = new LinkedNode(1);
        LinkedNode node2 = new LinkedNode(3);
        LinkedNode node3 = new LinkedNode(4);
        LinkedNode node8 = new LinkedNode(5);

        LinkedNode node4 = new LinkedNode(2);
        LinkedNode node5 = new LinkedNode(5);
        LinkedNode node6 = new LinkedNode(6);
        LinkedNode node7 = new LinkedNode(9);

        node1.setNext(node2);
        node2.setNext(node3);
        node3.setNext(node8);

        node4.setNext(node5);
        node5.setNext(node6);
        node6.setNext(node7);

        LinkedNode result = mergeNode(node1, node4);
        System.out.println(result);
    }

结果展示

合并两个有序链表为一个链表,最简单的java实现
欢迎各位大佬指点,批评。