【问题标题】:Singly linked list empty check单链表空检查
【发布时间】:2015-01-18 13:17:37
【问题描述】:

我已经为单链表创建了这个 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 
  }

我只想知道我检查列表是否为空的检查是否正确。

【问题讨论】:

    标签: java singly-linked-list is-empty


    【解决方案1】:

    是的,如果满足以下条件,您所做的检查是正确的:

    Node n = null;// init empty list
    

    和:

    n = new Node(3);// first item
    

    但是,我建议您创建一个独立于 item 连接的 list 结构。这就是我的意思:

    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());
        }
    }
    

    现在,当getNodeNumbers() 返回 0 时,列表为空(您可以在IList 接口中创建自己的方法isEmpty())。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      相关资源
      最近更新 更多