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;
}

Antworten auf die Frage(27)

Ihre Antwort auf die Frage