Reverse второй половины связанного спискаReverse LinkedList проблема в Java
Предположит, что мы 1-2-3-4
Выход: 1-2-4-3
Пусть мы имеем 1- 2-3-4-5
Выход: 1-2-3-5-4 // однако я хочу, чтобы результат был 1-2-5-4-3 в нечетном состоянии, как изменить код ниже?
public static ListNode reverseSecondHalfList(ListNode head) {
if (head == null || head.next == null) return head;
ListNode fast = head;
ListNode slow = head;
while (fast.next != null && fast.next.next != null) {
fast = fast.next.next;
slow = slow.next;
}
ListNode pre = slow.next;
ListNode cur = pre.next;
while (cur != null) {
pre.next = cur.next;
cur.next = slow.next;
slow.next = cur;
cur = pre.next;
}
return head;
}
Мой метод: Во-первых, найти стартовую позицию, чтобы поменять местами, то своп "до" и узел "дворняжка" каждый раз, когда до cur.next = NULL
Я не вижу ничего в коде, который понимает, где он находится в списке. Неужели вам нужно считать, что вы продвигаетесь по списку? –
Потому что нужно только перевернуть половину, поэтому я не использую счетчик @MartinBroadhurst – KKKK