In meiner Suche nach Algorithmen aus Interviewfragen zu erfahren, fand ich das wirklich interessant.Lösche einen Knoten aus einer verknüpften Liste, gegeben die Indexposition, aber beginnend am Ende
Im Grunde ging es darum, einen Knoten am Index zu entfernen, aber am Ende der verketteten Liste zu beginnen. Und in einer Schleife.
Ich dachte, dass Sie 2 Schleifen benötigen, eins die Länge der Liste kennen, ein anderes den Knoten zu löschen, beginnend am Ende, aber dann dachte ich, dass eine verkettete Liste sowieso sequentiell ist, also sollte eine Schleife funktionieren .
Wie würden Sie das am einfachsten angehen? Ich habe es mit Python versucht; Sie können eine einfache Liste erstellen und die Operation in 4 Zeilen ausführen; Aber wenn Sie in einem Interview sind, möchten sie normalerweise, dass Sie "alles von Hand" machen, ohne Sprachkürzel zu verwenden.
Verwenden Sie 2 Zeiger p1 und p2. in der Schleife, zuerst nur p1 um Indexzeiten vorwärts. Dann vorrücken beide bis zum Ende der Schleife, d. H. Bis p1 das Ende der Liste erreicht. Zu diesem Zeitpunkt zeigt p2 auf den Knoten im Entfernungsindex vom Ende und Sie können ihn löschen. – trans1st0r
Ich sehe, so der erste Zeiger verfolgen den globalen Index, während der zweite bei Index -n beginnen? Ich habe nicht darüber nachgedacht; das ist ein wirklich guter Weg, eine Schleife zu machen! –
das ist richtig, achten Sie auf Off-by-1 Fehler in diesem, stellen Sie sicher, dass Sie den richtigen Knoten löschen und den Fall behandeln, wenn die Länge der Liste kleiner ist als die angegebene Indexposition. – trans1st0r