Java中链表的指定区域数据反转

#有没有大佬知道为啥这段代码没能实现链表特定索引范围的反转啊?

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;
    }

这段代码运行完之后没有给我返回我输入的链表及指向的起点、终点范围数据的反转,是哪里出的问题啊?

@ada 可以回答一下这个问题吗

看完这篇博客,你就懂了:
博客网址:https://blog.csdn.net/qq_45498432/article/details/129790853