单链接列表打印方法仅打印第一个对象(Java)

时间:2016-10-22 04:56:25

标签: java linked-list

这是我的两个类NameNode和NameList。我的问题来自NameList类中的print()方法。如果我有两个名字,可以说“Lee”和“Jim”,使用所述方法的输出只打印出“Lee”。我不确定它的append方法是否无法添加到列表中,或者是否存在步骤错误导致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();
  }

  }
  }

2 个答案:

答案 0 :(得分:1)

master append函数中存在错误。在您的代码中,当您附加第二个名称时,程序将转到else语句,其中它为while循环中的条件计算false,并且从不附加第二个节点。因此,您的代码始终只能输入第一个元素。 请参阅更正后的附加功能,希望它可以完成这项工作。

NameList

答案 1 :(得分:0)

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

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

还有一件事,你刚刚初始化了一个字符串,这是private String lastName;,另一个是哪一个?