函数不会引用我正在创建的节点的链接列表

时间:2016-08-05 23:50:11

标签: java linked-list nodes

今年夏天读了一本关于Java数据结构的书,我在链接列表的基础知识和创建带节点的链表方面遇到了困难。

具体来说,我试图找出如何将未排序的整数文件传递给函数,对它们进行排序,以及打印已排序的链表。我知道我可能会让它变得比它需要的更复杂,但我只是不明白这些节点是如何链接的,以及如何返回它们。

我想我可以创建一个列表对象并将其用作对第一个节点的引用,而第一个节点又引用前一个节点直到列表的末尾,用null表示。这是我试图从书中学到的逻辑,但有些东西不是点击。

我收到一个错误,当我在main中调用它时,我的readFile方法是未定义的。怎么可能?

import java.util.Scanner;
import java.util.List;

public class Node {
    int value; 
    Node next; 

    /** 
     * Constructor 
     * @param value The element to store in this node, an integer from file
     */
    public Node(int value) {
        this.value = value;
        next = null; 
    }

    public static Node first;
    public static Node last; 

    public void linkedList() {
        first = null; 
        last = null;
    }

    /** 
     * function sorts integers 
     * @param inputFile file of integers from user
     * @return linked list of sorted integers 
     */
    public static Node readFile(Scanner inputFile) {

        while (inputFile.hasNext()) {
            int data = inputFile.nextInt(); 
            if (first == null) {
                first = new Node(data);
                last = first; 
            }
            if (data < first.value) {
                first.next = first; 
                first = new Node(data);
            }
            if (data > first.value) {
                last.next = new Node(data); 
                last = last.next; 
            }
        }
        return first; 
    }

    /**
     * function prints linked list
     */
    public void print() { 
        Node ref = first; 

        while (ref != null) {
            System.out.println(ref.value + " ");
            ref = ref.next;
        }
    }
}

这是我的主要推动因素:

    import java.util.Scanner;
    import java.util.List;
    import java.io.*; 

    public class listTesting {
    private static final String FILENAME = "numbers.txt"; 

    public static void main(String[] args) throws IOException {

        Scanner keyboard = new Scanner(System.in); 

        System.out.print("Opening " + FILENAME);
        File file = new File(FILENAME);
        Scanner inputfile = new Scanner(file);

        linkedList list = new linkedList(); 

        // error here stating this method is undefined ??
        list = readFile(inputfile);

        System.out.println("\nThe sorted linked list: ");
        list.print(); 
    }
}

1 个答案:

答案 0 :(得分:0)

在类listTesting中没有任何链接到Node类。 对于这一行

list = readFile(inputfile);

编译器尝试在listTesting类中找到静态方法。

下一项对我来说不明确的事项:

linkedList list = new linkedList(); 

// error here stating this method is undefined ??
list = readFile(inputfile);

使用默认构造函数创建列表变量,但之后只是使用readFile方法的结果更改它。同样在Node类中,readFile返回Node类(不是linkedList)。

我发现你刚开始使用Java,所以请仔细阅读有关Java的书籍(甚至尝试在数据结构之前重复Java基础知识)。