我正在创建一个链表,并且在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;
}
}
}
答案 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++;
}