#有没有大佬知道为啥这段代码没能实现链表特定索引范围的反转啊?
public Node<E> reverse(Node<E> head,int left,int right){
if (head == null || left < 1 || left > size ||right < 1 || right > size || left == right || left > right){
return head;
}
//1.找到左节点的起始位置
//2.从左节点遍历到右节点,然后把数据先存入集合
Node<E> first = head;
Node<E> mark = null;
List<E> data = new ArrayList<>();
int index = 0;
while (head != null){
index++;
if (index == left){
mark = head;//代表左节点位置找到了
}
if (index >= left && index <= right){
data.add(head.data);
}
if (index == right) break;
head = head.next;
}
//倒序遍历集合
for (int i = data.size() - 1; i >= 0; i--) {
E e = data.get(i);
mark.data = e;
mark = mark.next;
}
return first;
}
这段代码运行完之后没有给我返回我输入的链表及指向的起点、终点范围数据的反转,是哪里出的问题啊?