首页 > 解决方案 > 合并两个排序的链表空指针和输入仅适用于一个实例

问题描述

第一行包含一个整数 t,即测试用例的数量。

每个测试用例的格式如下:

第一行包含一个整数 n,即第一个链表的长度。下一行包含 n 个整数,即第一个链表的元素。下一行包含一个整数 m,即第二个链表的长度。下一行包含 m 个整数,即第二个链表的元素。

我的代码:

static void merge(MergeTowLiLi lili1, MergeTowLiLi lili2, MergeTowLiLi lili3){
        Node temp1 = lili1.head;
        Node temp2 = lili2.head;
        Node temp3 = lili3.head;
        while(temp1 != null || temp2 != null){
            if(temp1.data <= temp2.data){
                lili3.append(temp1.data);
                temp1 = temp1.next;
            }else{
                lili3.append(temp2.data);
                temp2 = temp2.next;
            }
        }
        while(temp3!=null){
            temp3 = temp3.next;
        }
        if(temp1.next == null){
            while(temp2 != null){
                lili3.append(temp2.data);
                temp2 = temp2.next;
            }
        }
        if(temp2.next == null){
            while(temp1 != null){
                lili3.append(temp1.data);
                temp1 = temp1.next;
            }
        }
        lili3.printList();
    }
    public static void main(String[] args){
        MergeTowLiLi lili1 = new MergeTowLiLi();
        MergeTowLiLi lili2 = new MergeTowLiLi();
        MergeTowLiLi lili3 = new MergeTowLiLi();
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        for(int i=0;i<t;i++) {
            int n = sc.nextInt();
            for (int j = 0; j < n; j++) {
                int l1 = sc.nextInt();
                lili1.append(l1);
            }
            int m = sc.nextInt();
            for (int k = 0; k < m; k++) {
                int l2 = sc.nextInt();
                lili2.append(l2);
            }
            merge(lili1, lili2, lili3);
        }
    }

我无法理解线程“main”中的空指针异常异常 java.lang.NullPointerException:无法读取字段“data”,因为“temp1”为空,请提前提供帮助。

标签: data-structureslinked-list

解决方案


推荐阅读