没有遍历列表的单链表结尾的第5个元素

时间:2016-12-09 15:15:58

标签: java data-structures linked-list

我已经编写了下面的代码,用于从单个链接列表的末尾查找第5个元素。不应该多次遍历列表。假设在没有遍历列表的情况下无法知道列表大小。我的代码是否满足问题?我已经看到使用指针解决了同样的问题,所以如果我的方法是错误的,我会感到困惑。

public class LinkedList {

    public static void main(String[] args) {

        List<String> inputListStr = new ArrayList<String>();
        java.util.LinkedList<String> outputList = new java.util.LinkedList<String>();
        System.out.println("Enter comma separated input");
        Scanner Scan1 = new Scanner(System.in);
        inputListStr = Arrays.asList(Scan1.next().split(","));
        outputList.addAll(inputListStr);
        nthElement(outputList);
        Scan1.close();
    }

    public static void nthElement(java.util.LinkedList<String> outputList) {

        int counter = 0;
        for (String list : outputList) {
            counter++;
        }

        System.out.println("5th element is " + outputList.get(counter - 5));

    }
}

1 个答案:

答案 0 :(得分:1)

LinkedListArrayList将大小保持为实例内的int。因此,检查大小不会计为遍历列表。

因此,您可以使用一行代码解决您的问题:

Object solution = list.get(list.size() - 5);

当然你需要添加一些检查,比如列表的大小是否至少为5,但你明白了^^