Java链表添加方法

 收藏

我正在尝试实现一个链表,该链表使用包含头,尾和当前节点的节点类。链接列表的一部分是一个add方法,该方法应该像实际的链接列表一样向列表中当前节点的末尾添加一个值。我的问题是,它仅适用于第一个节点,然后在此处停止。例如,在我的主语言中,我尝试通过调用“ add(1);”来测试代码。和“ add(2);”。控制台显示“ 1”,仅此而已。我不确定错误是在我的add方法,toString方法还是节点类中。

我还要补充一点,我测试了在两种情况下是否都为“当前”分配了正确的值。这使我想知道问题的根源是否在于toString,但是无论我尝试多少,都无法更改它以进行任何改进。

我希望新鲜的眼睛可以发现可能存在的任何严重问题。

添加方法:

    public void add(int val){

    if(current != null){

    Node nextNode = new Node(val, current);

    current = nextNode;
    tail = nextNode;

}
else{

    head = tail = new Node(val, null);
    current = head;

}

 }

节点类:

public class Node{

public int data;
public Node next;

 public Node(int d, Node next) {

    this.data = d;
    this.next = next;
}

}

toString:

    public String toString(){

    for(Node x = head; x != null; x = x.next){

    System.out.println(x.data);
}

所有:

public class IntLList extends IntList{

public IntLList(){


}

public class Node{

public int data;
public Node next;

 public Node(int d, Node next) {

    this.data = d;
    this.next = next;
}

}

Node head = null;
Node tail = null;
Node current = null;

 public void add(int val){

    if(current != null){

    Node nextNode = new Node(val, current);

    current = nextNode;
    tail = nextNode;



}
else{

    head = tail = new Node(val, null);
    current = head;


}

 }

public int get(int index){

return 0;
}

public void set(int index, int val){

}

public void remove(int index) throws ArrayIndexOutOfBoundsException{

}

public int size(){

return 0;
}

public String toString(){

    for(Node x = head; x != null; x = x.next){

System.out.println(x.data);
}

return "temp";
}

public void removeLast(){


}

public boolean isEmpty(){

boolean isEmpty = false;

if(head == null){       
    isEmpty = true;
}

return isEmpty;
}


public void clear(){    
}


public static void main(String[] args) {

IntLList i = new IntLList();
i.add(1);
i.add(2);
i.toString();
}

}

回复
  • Moll 回复

    进行以下更改

    public class Node{
    
    public int data;
    public Node next;
    
     public Node(int d, Node next) {
    
        this.data = d;
        this.next = NULL; // this is to set the next node of current node to null
        if(next!=NULL)
        next.next=this; // this is to set the previous node to point to current node
    
    }
    
    }