umge zweite Hälfte der verlinkten ListeReverse-LinkedList Problem in Java
Angenommen, wir haben 1-2-3-4
Ausgang: 1-2-4-3
Angenommen, wir haben 1- 2-3-4-5
Ausgabe: 1-2-3-5-4 // aber ich möchte, dass die Ausgabe 1-2-5-4-3 in der ungeraden Bedingung ist, wie der Code geändert wird unten?
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;
}
Meine Methode: Zum einen die Startposition finden tauschen "pre" getauscht werden, dann Knoten und "Aktuell" jedes Mal, bis cur.next = null
ich sehe nichts in dem Code, der versteht, wo es in der Liste ist. Sicher müssen Sie zählen, während Sie durch die Liste vorrücken? –
Weil es nur die Hälfte umkehren muss, also verwende ich nicht den Counter @MartinBroadhurst – KKKK