Stellen Sie sich vor, Sie haben eine LinkedList
einfügen Elemente {A, B, C, D, E, F}, diese Operation sind O (1) jetzt möchte ich zurück zum Anfang gehen und addiere {G, H, I}, so dass die endgültige LinkedList wie folgt aussehen würde: {G, H, I, A, B, C, D, E, F}.Einfügen in der Mitte von LinkedList in Java
Ich kann dies tun list.add(index, content)
verwenden, aber diese erheblich ineffizient ist, da jede Operation O (N) sein würde. Später würde ich gerne weiter am Schwanz hinzufügen. Ich bin sicher, es gibt eine Möglichkeit, all diese Operationen in O (1) Zeit, ohne meine eigene verknüpfte Liste, ich weiß einfach nicht wie.
Edit: Also, was ich wirklich wissen wollen, ob Java eine Art Iterator/Zeiger hat, i, wobei ein von dort in O (1), beispielsweise i = 3 {A, B, C einsetzen kann,^D, E, F}, Einfügen {G}, {H}, {I} würde die Liste wie {A, B, C, G, H, I, D, E, F} aussehen lassen. list.addAll
funktioniert, aber ich muss zuerst eine Liste erstellen. Wie auch immer, wenn eine solche Methode existiert, möchte ich nicht weitermachen, ohne sie zu kennen.
Schließlich stelle ich diese Frage, um diesen Uva Richter zu lösen problem Ich weiß, wie es zu lösen, aber wenn andere Szenarien nicht verallgemeinert werden kann, lerne ich nichts.
Verwenden Sie einfach 'list.addFirst()', um zuerst hinzuzufügen, und 'list.addLast()', um zum Ende und für die mittlere Verwendung hinzuzufügen 'list.add (index, data)' –
'add (int index, Inhalt) 'ist' O (Index) 'nicht' O (list.size()) ' –