Как установить следующий из последнего элемента связанного списка на первый элемент в структуре данных LinkedList? - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь использовать java.util.LinkedList, чтобы получить связанный список и каким-то образом изменить его на круговой связанный список.

Например, можно ли установить следующий из последнего элемента первым (как это можно сделать в самодельном связанном списке)?

Если нет, то, пожалуйста, предложите мне другой способ достижения моей цели.

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Вы не можете использовать LinkedList, но вы можете реализовать свое собственное решение. Например, вы можете просто создать класс, содержащий список, и объявить свой собственный API для его использования. Э.Г.

public static class CircularList<T> implements Iterable<T> {

    private LinkedList<T> list = new LinkedList<>();

    public void add(T num) {
        list.add(num);
    }

    @Override
    public Iterator<T> iterator() {
        return new Iterator<T>() {
            int idx = 0;

            @Override
            public boolean hasNext() {
                return true;
            }

            @Override
            public T next() {
                if (list.isEmpty()) {
                    throw new RuntimeException();
                }

                if (idx + 1 < list.size()) {
                    return list.get(++idx);
                }

                idx = 0;
                return list.get(0);
            }
        };
    }
}

Это простая реализация кругового списка.

1 голос
/ 05 июля 2019

Нет, вы не можете сгенерировать циркуляр LinkedList. Циркуляр LinkedList не сможет реализовать собственный API. Как, например, LinkedList.add будет работать, если список не имеет конца?

Вы определили решение: создайте свой собственный связанный список.

...