Вставьте элементы в пользовательский LinkedList в порядке - PullRequest
0 голосов
/ 16 июля 2011

Я пытаюсь вставить элементы в пользовательский связанный список, сохраняя список в порядке.

Моя работа до сих пор такова:

public class CustomList {   

    public CustomList() {
        this.first = null;
    }
    public void insert(Comparable newThing) {
        Node point = this.first;
        Node follow = null;
        while (point != null && point.data.compareTo(newThing) < 0) {
            follow = point;
            point = point.next;
        }
        if (point == null) {
            Node newNode = new Node(newThing);
            newNode.next = this.first;
            this.first = newNode;
        } else {
            Node newNode = new Node(newThing);
            newNode.next = point;
            if (follow == null) {
                this.first = newNode;
            } else {
                follow.next = newNode;
            }
        }
    }
    private Node first;

    private class Node {

        public Comparable data;
        public Node next;

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

Вывод, который я получаю из этого, выглядит так, как будто он упорядочивает части списка, а затем начинается заново.

Пример (сортирую строки):

Вместо того, чтобы получить что-то вроде a,b,c,...,z

Я получаю a,b,c,...,z,a,b,c,...,z,a,b,c,...,z

Похоже, что он не «видит» весь список в определенные моменты.

Это часть задания HW, поэтому я буду признателен за предложения, но позвольте мне самому разобраться!

1 Ответ

1 голос
/ 16 июля 2011

Что произойдет, если вы вставите элемент, который больше, чем все ваши существующие элементы?

Вы хотите вставить элемент в конце, но на самом деле вы вставляете его в начале. И любые последующие элементы будут вставлены перед этим (если они меньше) или снова при запуске.

...