如何将链接列表的最后一个元素的下一个设置为LinkedList数据结构中的第一个元素?

时间:2019-07-05 14:29:41

标签: java data-structures linked-list circular-list

我正在尝试使用java.util.LinkedList来获取链表并将其以某种方式更改为循环链表。

是否有可能将最后一个元素的下一个设置为第一个(因为这可以在自制的链接列表中完成)?

如果没有,请向我建议另一种实现目标的方法。

2 个答案:

答案 0 :(得分:1)

否,您无法生成通告LinkedList。通告LinkedList无法实现自己的API。例如,如果列表没有结尾,LinkedList.add将如何工作?

您确定了解决方案:实现自己的链表。

答案 1 :(得分:1)

您不能使用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);
            }
        };
    }
}

这是循环列表的简单实现。