我为单链表创建了这个Node类:
class Node{
int item;
Node next;
Node(int v){
item = v;
next = null;
}
}

我想在一个名为findmax的方法中搜索具有最高键的节点。但是我想检查列表是否为空,如果是,则返回null ,否则返回具有最高密钥的节点。这就是我所做的:
Node findmax(Node h){
if(h==null)
return null;
else{
//search
}
我想知道的是,如果检查列表是否为空,我是否正确。
答案 0 :(得分:0)
是的,如果符合以下条件,您所做的检查是正确的:
Node n = null;// init empty list
和
n = new Node(3);// first item
但是,我建议你创建一个独立于list
连接的item
结构。这就是我的意思:
Node
类:
public class Node
{
int value;
public Node(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
list
结构:
public interface IList
{
public int getNodeNumbers();
}
public class EmptyList implements IList
{
@Override public int getNodeNumbers() {
return 0;
}
}
public class ConsList implements IList
{
private Node node;
private IList next;
public ConsList(Node node, IList next) {
this.node = node;
this.next = next;
}
@Override public int getNodeNumbers() {
return 1 + next.getNodeNumbers();
}
}
如何使用它:
public class Main
{
public static void main(String[] args) {
IList list1 = new ConsList(new Node(1),
new ConsList(new Node(2),
new ConsList(new Node(3),
new ConsList(new Node(4),
new EmptyList()))));
IList list2 = new EmptyList();
System.out.println(list1.getNodeNumbers() + " - " + list2.getNodeNumbers());
}
}
现在,当isEmpty()
返回0时,列表为空(您可以在IList
接口中创建自己的方法getNodeNumbers()
。