java 两个链接列表在显示时未单独打印

tkclm6bt  于 2023-08-02  发布在  Java
关注(0)|答案(1)|浏览(104)
public class MergeSinglyLinkedList {

private static ListNode head;

private static class ListNode {
    private int data;
    private ListNode next;

    public ListNode(int data) {
        this.data = data;
        this.next = null;
    }
}
public static void main(String[] args) {
        MergeSinglyLinkedList sll1 = new MergeSinglyLinkedList();
        sll1.insertAtLast(1);
        sll1.insertAtLast(5);
        sll1.insertAtLast(9);
        sll1.insertAtLast(11);

        MergeSinglyLinkedList sll2 = new MergeSinglyLinkedList();
        sll2.insertAtLast(2);
        sll2.insertAtLast(3);
        sll2.insertAtLast(7);
        sll2.insertAtLast(10);
        sll2.insertAtLast(11);
        sll2.insertAtLast(13);
        sll2.insertAtLast(19);
        sll2.insertAtLast(20);
        
        sll1.display();
        sll2.display();
}
public void insertAtLast(int value){
    ListNode newNode = new ListNode(value);
    if(head==null){
        head=newNode;
        return;
    }
    ListNode current = head;
    while (null!=current.next){
        current= current.next;
    }
    current.next=newNode;
}

>     public void display(){
        ListNode current=head;
        int count=0;
        while (current!=null){
            System.out.print(current.data+"-->");
            count++;
            current=current.next;
        }
        System.out.println("null");
    }

这是我在intelliJ中尝试执行的代码。我期望的输出是:

1-->5-->9-->11-->null
2-->3-->7-->10-->11-->13-->19-->20-->null


但是,我得到的输出是
1-->5-->9-->11-->2-->3-->7-->10-->11-->13-->19-->20-->null
我尝试创建一个单独的**display 1()**函数,然后调用它来打印链表,如下所示:

public void display(){
        ListNode current=head;
        int count=0;
        while (current!=null){
            System.out.print(current.data+"-->");
            count++;
            current=current.next;
        }
        System.out.println("null");
    }

    public void display1(){
        ListNode current=head;
        int count=0;
        while (current!=null){
            System.out.print(current.data+"-->");
            count++;
            current=current.next;
        }
        System.out.println("null");
    }


然后分别调用这两个函数:

sll1.display();
sll2.display1();


但输出仍然是:

1-->5-->9-->11-->2-->3-->7-->10-->11-->13-->19-->20-->null
1-->5-->9-->11-->2-->3-->7-->10-->11-->13-->19-->20-->null


我不知道我做错了什么,有人能帮帮我吗?

wgx48brx

wgx48brx1#

private ListNode head;

private static class ListNode {
    private int data;
    private ListNode next;

    public ListNode(int data) {
        this.data = data;
        this.next = null;
    }
}

字符串
即使我有多个ListNode示例,也只有一个head,因为在head的定义中,使用了static关键字。因此,如果我们创建另一个ListNode head或从现有定义中删除static,输出将如下所示:
1-->5-->9-->11-->null 2-->3-->7-->10-->11-->13-->19-->20-->null

相关问题