Wie finde ich das n-te Element am Ende einer einfach verknüpften Liste?
Die folgende Funktion versucht das @ zu findnth
zuzuletz Element einer einfach verknüpften Liste.
Beispielsweise
Wenn die Elemente @ si8->10->5->7->2->1->5->4->10->10
dann ist das Ergebnis7th
zum letzten Knoten ist7
.
Kann mir jemand helfen, wie dieser Code funktioniert oder gibt es einen besseren und einfacheren Ansatz?
LinkedListNode nthToLast(LinkedListNode head, int n) {
if (head == null || n < 1) {
return null;
}
LinkedListNode p1 = head;
LinkedListNode p2 = head;
for (int j = 0; j < n - 1; ++j) { // skip n-1 steps ahead
if (p2 == null) {
return null; // not found since list size < n
}
p2 = p2.next;
}
while (p2.next != null) {
p1 = p1.next;
p2 = p2.next;
}
return p1;
}