Sag mir, wie man eine verkettete Liste in Java umkehrt
Klar! Hier ist ein Beispiel, wie man eine einfach verkettete Liste in Java umkehrt:

```java
public class ListNode {
    int val;
    ListNode next;
    ListNode(int x) { val = x; }
}

public class ReverseLinkedList {
    public ListNode reverseList(ListNode head) {
        ListNode prev = null;
        ListNode curr = head;
        while (curr != null) {
            ListNode nextNode = curr.next;
            curr.next = prev;
            prev = curr;
            curr = nextNode;
        }
        return prev;
    }
}
```
In diesem Code repräsentiert ListNode die Knoten der verketteten Liste, und jedes ListNode-Objekt hat einen ganzzahligen Wert und einen next-Zeiger, der auf den nächsten Knoten in der Liste zeigt.

Die ReverseLinkedList-Klasse enthält die reverseList()-Methode, die den Kopf der verketteten Liste als Eingabe erhält und den neuen Kopf der umgekehrten Liste zurückgibt. Der Algorithmus funktioniert, indem er mit zwei Zeigern (prev und curr) durch die Liste iteriert. Bei jeder Iteration wird der next-Zeiger des aktuellen Knotens aktualisiert, um auf den vorherigen Knoten zu zeigen, und die Zeiger prev und curr werden um einen Knoten nach vorne bewegt. Wenn die Iteration abgeschlossen ist, zeigt der prev-Zeiger auf den neuen Kopf der umgekehrten Liste, daher wird er als Ausgabe zurückgegeben.

Beachten Sie, dass diese Implementierung für eine einfach verkettete Liste gilt, bei der jeder Knoten nur einen next-Zeiger hat. Wenn Sie eine doppelt verkettete Liste haben (bei der jeder Knoten sowohl prev- als auch next-Zeiger hat), wäre der Algorithmus etwas anders.