LinkedList,获取或添加错误

时间:2019-02-03 22:44:11

标签: java data-structures

我正在创建一个链表,并且在get()或add(index,data)中遇到一些问题。我确实相信添加是正确的,所以我请您在get()方法中查找我做错了什么。 编辑:问题是我在索引0和索引1处获得了相同的值。

public T get(int index) {
        int counter = 0;
        Node<T> temp = head;
        if(index < 0 || index > size() || head == null){
            throw new IndexOutOfBoundsException();
        } else {
            if(index == size()){
                temp = tail;
                return temp.data;
            }
            if(index == 0){
                return temp.data;
            }  else {
                while (counter +1 != index){
                    temp = temp.next;
                    counter++;
                }
                return temp.data;
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

想象一下您在index == 1中传递了-您想要第二个元素,是吗?

但是,您的while循环将永远不会进入(因为counter == 0表示counter + 1 ==索引)。 因此,将您的while循环更改为“ while(counter

您会发现不需要显式的“ if(index == 0)”或:)

实际上,此循环然后浓缩为直线for循环,因此:

for (int counter=0; counter < index; counter++) {
    temp = temp.next;
}

答案 1 :(得分:0)

您的while循环条件不正确。您需要将其更改为-

while (counter != index){
   temp = temp.next;
   counter++;
}