Java 我的链表的toString()方法只打印第一个元素
我从头开始实现自己的java.util.linkedlist,所以我没有使用任何java.util.linkedlist功能。话虽如此,我目前正在尝试创建自己的toString方法。这是我的节点类Java 我的链表的toString()方法只打印第一个元素,java,Java,我从头开始实现自己的java.util.linkedlist,所以我没有使用任何java.util.linkedlist功能。话虽如此,我目前正在尝试创建自己的toString方法。这是我的节点类 private static class Node<T>{ private T data; private Node<T> next; public Node(T d){ next= null; data = d; }
private static class Node<T>{
private T data;
private Node<T> next;
public Node(T d){
next= null;
data = d;
}
public Node(T d, Node<T> n){
data = d;
next = n;
}
public T getData(){
return data;
}
public void setData(T d){
data = d;
}
public Node<T> getNext(){
return next;
}
public void setNext(Node<T> n){
next = n;
}
}
私有静态类节点{
私有T数据;
私有节点下一步;
公共节点(td){
next=null;
数据=d;
}
公共节点(td,节点n){
数据=d;
next=n;
}
公共T getData(){
返回数据;
}
公共无效setData(td){
数据=d;
}
公共节点getNext(){
下一步返回;
}
public void setNext(节点n){
next=n;
}
}
这是我的班级
private Node<T> start;
private int size;
public ListNoOrder() {
start = null;
size = 0;
}
public void add(T newElt) {
Node<T> temp = new Node<T>(newElt);
Node<T> current = start;
try{ if (newElt==(null));}
catch (Exception illegalArgumentException){
throw new IllegalArgumentException();}
if (start == null){
start = new Node<T>(newElt, null);
}
if(current != null){
while (current.next != null){
current.setNext(temp);
}
}
size++;
}
public int length() {
return size;}
私有节点启动;
私有整数大小;
公共ListNoOrder(){
start=null;
尺寸=0;
}
公共无效添加(T newElt){
节点温度=新节点(newElt);
节点电流=启动;
尝试{if(newElt==(null));}
捕获(异常illegalArgumentException){
抛出新的IllegalArgumentException();}
如果(start==null){
开始=新节点(newElt,null);
}
如果(当前!=null){
while(current.next!=null){
当前设置下一步(温度);
}
}
大小++;
}
公共整数长度(){
返回大小;}
到目前为止,我的toString方法
public String toString() {
String toPrint = "";
Node <T> current = start;
while (current != null){
toPrint += current.getData();
if (current.next != null)
toPrint += " ,";
current = current.getNext();
}
return toPrint;
}
公共字符串toString(){
字符串toPrint=“”;
节点电流=启动;
while(当前!=null){
toPrint+=current.getData();
if(current.next!=null)
toPrint+=“,”;
current=current.getNext();
}
返回toPrint;
}
当我测试该方法时,它只打印列表的第一个元素
模拟列表=7,8,15,62,38,3
什么样的短跑=7
我已经挣扎了好几个小时了 在您的
add
方法中,您只需在此处开头设置start
变量
start = new Node<T>(newElt, null);
即使此条件为真,它也不会真正起作用-此处需要做的是获取最后一个节点(没有下一个
的节点,并且只将其设置为下一个
)。差不多
if(current != null) {
while(current.getNext() != null) {
current = current.getNext();
}
current.setNext(new Node<T>(newElt));
}
else {
current = new Node<T>(newElt, null); // because current is start
}
if(当前!=null){
while(current.getNext()!=null){
current=current.getNext();
}
current.setNext(新节点(newElt));
}
否则{
current=新节点(newElt,null);//因为current是start
}
在add
方法中,您只需在此处开头设置start
变量
start = new Node<T>(newElt, null);
即使此条件为真,它也不会真正起作用-此处需要做的是获取最后一个节点(没有下一个
的节点,并且只将其设置为下一个
)。差不多
if(current != null) {
while(current.getNext() != null) {
current = current.getNext();
}
current.setNext(new Node<T>(newElt));
}
else {
current = new Node<T>(newElt, null); // because current is start
}
if(当前!=null){
while(current.getNext()!=null){
current=current.getNext();
}
current.setNext(新节点(newElt));
}
否则{
current=新节点(newElt,null);//因为current是start
}
添加列表初始化代码(添加元素并调用toString方法的位置)。toString方法定义在哪里?似乎它可以访问privatenext
Node字段?有人告诉我start
实际上是您链的最后一个节点。您的意思是toString在哪里定义@m、 antkowiczI正在@AxelH实现一个单链接列表…我该如何修复它?它是在节点
类中还是在列表顺序
类中?添加列表初始化代码(添加元素并调用toString方法的地方)。toString方法定义在哪里?似乎它可以访问privatenext
Node字段?有人告诉我start
实际上是您链的最后一个节点。您的意思是toString在哪里定义@m、 antkowiczI正在实现一个单链接列表@AxelH…我该如何修复它?它是在节点
类中还是在列表顺序
类中?哦,我明白了…那么我该如何设置下一个节点?谢谢谢谢谢谢谢谢…我对数据结构是新手,只是想掌握它的窍门!多谢各位@m、 antkowiczglad来帮忙;)哦,我明白了……那我该如何设置下一个节点呢?谢谢谢谢谢谢……我对数据结构不太熟悉,只是想掌握它的窍门!多谢各位@m、 antkowiczglad来帮忙;)