Ich habe einen abstrakten Datentyp, der als eine von links nach rechts gespeicherte Liste mit den folgenden möglichen Operationen betrachtet werden kann: Push: Hinzufügen eines neuen Eintrags am linken Ende der Liste Pop: Entfernen des Eintrags am linken Ende der Liste Pull: Entfernen des Eintrags am rechten Ende der Liste
Implementieren Sie dies mit drei Stapeln und konstantem zusätzlichem Speicher, so dass die amortisierte Zeit für jede Push-, Pop- oder Pull-Operation konstant ist. Die Stapel haben grundlegende Operationen, isEmpty, Push und Pop.
Amortisierte Zeit bedeutet: "Wenn ich diese Menge an Zeit aufbringe, kann ich einen weiteren Block davon aufbrauchen und ihn in einer Zeitbank speichern, um ihn später zu verwenden", z. B. für jede Push-Operation drei Blöcke konstanter Zeit, so dass Sie für jedes geschobene Element zwei zusätzliche Blöcke konstanter Zeit haben.
0 Stimmen
Natürlich, aber ich nehme an, das spielt keine Rolle, es ist eine interessante Frage und ich würde gerne die Lösung hören.
0 Stimmen
Hausaufgaben oder nicht beeinflussen die Art und Weise, wie zu antworten ist. Bei Hausaufgaben sollte man das Denken anregen und nicht einfach einen Code ausgeben, oder?
0 Stimmen
stackoverflow.com/questions/230510/homework-on-stackoverflow
0 Stimmen
Ich behandle Hausaufgaben genauso wie andere Probleme. Abgesehen davon ist diese Frage eigentlich eine Anweisung: "Mach meine Hausaufgaben", ohne jeden Hinweis darauf, dass der Fragesteller a) das Problem versteht, b) das Problem verstehen will oder c) etwas aus der Aufgabe lernen möchte. Das macht ihre Beantwortung nicht gerade erfüllend.