首页 > 解决方案 > 我试图在 java 中从头开始实现链表,但出现以下错误

问题描述

我已经在 sublime text 上编写了代码 & 在命令提示符下,出现以下错误并且我难以解决,我在类数据错误中实现了 LinkedList 类:非静态变量无法从静态上下文 LinkedList 引用llist = new LinkedList(); ^ data.java:24:错误:不兼容的类型:节点无法转换为 data.LinkedList.Node llist.head = new Node(1); ^ data.java:27:错误:不兼容的类型:节点无法转换为 data.LinkedList.Node llist.head.next=second;

public class data{ 
 class LinkedList {
       Node head;
   class Node{
            int data;
            Node next; 
            public void Node(int data ){
            this.data = data;
            next=null;
            }
          }
public LinkedList(){}
public void printList(){
    Node n = head;
    while(n != null){
        System.out.println(n.data+" ");
        n=n.next;}
}
}
public static void main(String[]args){
System.out.println("in main ");
LinkedList llist = new LinkedList();
llist.head = new Node(1); 
Node second=new Node(2);  
Node third=new Node(3);
llist.head.next=second;
second.next=third;
llist.printList();
}
}

标签: javacompiler-errorslinked-liststatic

解决方案


  1. 声明内部类静态,如果你想从静态方法实例化它们:static class LinkedList, static class Node.
  2. 构造函数没有void返回类型:public Node(int data) {...}.
  3. 限定内部类的内部类名称:new LinkedList.Node(...).
public class data {
    static class LinkedList {
        Node head;

        static class Node {
            int data;

            Node next;

            public Node(int data) {
                this.data = data;
                next = null;
            }
        }

        public LinkedList() {
        }

        public void printList() {
            Node n = head;
            while (n != null) {
                System.out.println(n.data + " ");
                n = n.next;
            }
        }
    }

    public static void main(String[] args) {
        System.out.println("in main ");
        LinkedList llist = new LinkedList();
        llist.head = new LinkedList.Node(1);
        LinkedList.Node second = new LinkedList.Node(2);
        LinkedList.Node third = new LinkedList.Node(3);
        llist.head.next = second;
        second.next = third;
        llist.printList();
    }
}

  1. 正确缩进你的代码。
  2. 使用 Eclipse 之类的 IDE 进行 Java 开发 - 它可以帮助您找到很多类似的问题。

推荐阅读