Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在双链接列表的末尾插入节点_Java_Doubly Linked List - Fatal编程技术网

Java 在双链接列表的末尾插入节点

Java 在双链接列表的末尾插入节点,java,doubly-linked-list,Java,Doubly Linked List,我试图在双链接列表的末尾插入一个节点,但当我运行add方法时,代码永远不会运行完。代码如下: public class DoublyLinkedList<T> { static class Node<T> { T data; Node<T> next; Node<T> previous; Node() { data = null;

我试图在双链接列表的末尾插入一个节点,但当我运行add方法时,代码永远不会运行完。代码如下:

public class DoublyLinkedList<T> {
    static class Node<T> {
        T data;
        Node<T> next;
        Node<T> previous;
        
        Node() {
            data = null;
            next = null;
            previous = null;
        }
        
        Node(T value) {
            data = value;
            next = null;
            previous = null;
        }
    }
    
    private Node<T> head;
    private int size;
        
    public DoublyLinkedList() {
        head = null;
    }
    
    public DoublyLinkedList(T value) {
        head = new Node<T>(value);
        size ++;
    }

    public void add(T value) {
        Node<T> append = new Node<T>(value);
        append.next = null;
        if(head == null) {
            append.previous = null;
            head = append;
            size ++;
            return;
        }
        Node current = head;
        while(current.next != null) {
            current = current.next;
        }
        current.next = append;
        append.previous = current;
        size ++;
    }
公共类双链接列表{
静态类节点{
T数据;
节点下一步;
节点前向;
节点(){
数据=空;
next=null;
previous=null;
}
节点(T值){
数据=价值;
next=null;
previous=null;
}
}
专用节点头;
私有整数大小;
公共双链接列表(){
head=null;
}
公共双链接列表(T值){
head=新节点(值);
大小++;
}
公共无效添加(T值){
节点追加=新节点(值);
append.next=null;
if(head==null){
append.previous=null;
头=附加;
大小++;
返回;
}
节点电流=头;
while(current.next!=null){
当前=当前。下一步;
}
current.next=追加;
append.previous=当前;
大小++;
}

我很确定这行写着current.next=append是问题所在,但我不确定如何解决它。我做错了什么?

这些行:
append.next=null;
append.previous=null;
似乎没有必要,因为它们重复了(部分内容)
节点
构造函数的功能。
节点是否是与其余数据类型相同的当前
变量't finish您可能会陷入
while
循环,但我不明白为什么会这样。我尝试运行您的代码。我没有遇到任何问题。一切正常fine@CiaPan我添加这两行只是为了看看它是否能工作,但我最初没有这两行,将current更改为Node并没有什么区别。