#有没有大佬知道为啥这段代码没能实现链表特定索引范围的反转啊?
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
List<User> users=new ArrayList();
//如果测项名称相同就手动排序
if(users.size()>0){
String itemName = users.get(0).getItemName();
if("中文".equals(itemName)||"汉语".equals(itemName)){
users.sort(new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
//这里调用工具类实现排序
return PointSortUtil.compare(o1.getPointName(),o2.getPointName());
}
});
}
}