Ich dachte an eine Lösung für dieses Problem.Implementieren Sie einen Algorithmus, um einen Knoten in eine kreisförmige verkettete Liste einzufügen, ohne ihn zu durchlaufen
Meine Eingabe:
1. Haben Sie einen Tail-Zeiger, der auf den letzten Knoten zeigt.
2. Sobald Sie den letzten Zeiger kennen, können Sie leicht einen neuen Knoten daneben hinzufügen.
Void Insert(Node N)
{
if (head == null) // linked list is empty
{
head = N; tail = N; tail.Next = head;
}
else
{
Node temp = tail.Next; // since this is circular tail will point to head
Tail.Next = N;
N.Next = temp; // correct
tail = N;
}
}
Kann any1 bessere Lösung ohne Verwendung von Tail-Pointer denken? Auch wie im Problem angegeben ohne zu verfahren? Dies ist eine Interviewfrage, die nur einige Eingaben benötigt, um die beste Lösung zu finden.
Wo ist der Einfügepunkt? – Cambium
nach dem letzten Knoten – Learner
Da ist ein Bug, ich glaube, es sollte N.Next sein = temp. Abgesehen davon, scheint es mir eine sehr gute Art, Dinge zu tun ... – Jaime