我在下面编写的代码不会检查我要查找的值是否在最后一个节点中。如何检查最后一个节点的值?
public void search(int value)
{
Node node = head;
while(node.next!=null)
{
if(node.data == value)
{
System.out.println("Found");
}
node = node.next;
}
}
答案 0 :(得分:1)
在您的while
条件下,您正在检查 next 节点是否为空。这意味着当当前迭代在最后一个节点上时,将不会对其进行检查。您需要检查node
本身是否为null
,这意味着您已超出链接列表的末尾。
while (node != null)
这意味着直到检查完最后一个节点(由node
表示为null
后,您才可以停止循环。
顺便说一句,除非方法签名是通过作业分配来固定的,否则您可能希望方法返回一个boolean
来指示是否找到了该值,而不是如果发现则打印一些内容而不是什么进行打印你没找到。
答案 1 :(得分:1)
最后一个节点是end = null之前的一个节点。只要遵循想法(代码可能会有一个小错误)
public void search(int value)
{
Node node = head;
Node lastnode;
while(node.next!=null)
{
if(node.data == value)
{
System.out.println("Found");
}
lastnode = node;
node = node.next;
if(node==null)
System.out.println("Last node Found"); //lastnode.data
}
}