单链表打印方法只打印第一个对象(Java)



这是我的两个类NameNode和NameList。我的问题来自于NameList类中的print()方法。如果我有两个名字,比如"Lee"one_answers"Jim",使用上述方法的输出只输出"Lee"。我不确定是否它的追加方法未能添加到列表中,或者如果有一个步骤错误导致tmp不推进到列表中的下一个对象。如有任何帮助,不胜感激。

public class NameNode {
private String lastName;
private NameNode next;
public NameNode(String lastName, NameNode toNext)
{
   this.lastName = lastName;
   this.next = toNext;
}
public String getName()
{
    return lastName;
}
public NameNode getNext()
{
    return next;
}
public void setNext(NameNode next)
{
    this.next = next;
}
 public String toString()
{
  return lastName;
}
}


public class NameList {
private NameNode names;
public NameList()
{
names = null;  
}
public boolean isEmpty()
{ 
  return names == null;
}
public void append(String name)
{
if(names == null)
{
 names = new NameNode(name,null);
}
else
{
    NameNode tmp = names;
    //tmp = names;
    while(tmp.getNext() != null)
    {
        tmp = tmp.getNext();
        tmp.setNext(new NameNode(name,null));
    }
}
   null
}
public void print()
{
  NameNode current = names;
  while(current != null)
  {
      System.out.println(current.getName());
      current = current.getNext();
  }
  }
  }

您的NameListappend函数有错误。在您的代码中,当您追加第二个名称时,程序转到else语句,在那里它对while循环中的条件求值为false,并且从不追加第二个节点。因此,您的代码始终只能输入第一个元素。请参考更正后的追加函数,希望它能完成这项工作。

public void append(String name)
{
  if(names == null)      {
    names = new NameNode(name,null);
  }
  else{
    NameNode tmp = names;
    while(tmp.getNext() != null){
      tmp = tmp.getNext();
    }
    tmp.setNext(new NameNode(name,null));
  }
}

因为您在构造函数中只传递一个名称,如果您查看getName()方法,您将看到您只有一个lastName

public NameNode(String lastName, NameNode toNext)
{
   this.lastName = lastName;
   this.next = toNext;
}
public String getName()
{
    return lastName;
}

还有一件事,你只初始化了一个字符串,那就是private String lastName;,另一个在哪里?

相关内容

  • 没有找到相关文章

最新更新