Seite 1 von 1

1: Frage zu assembleNumbers()

Verfasst: 2. Mai 2015 15:30
von paddy01
Meine Tests behaupten ich würde neue Objekte erstellen aber das tut meine Schleife zu keinem Zeitpunkt.
Ich blicke nicht wirklich durch den Test durch aber ich vermute dass ein Algorithmus verlangt ist, der Zahlenelemente direkt zusammen fügt und Operatoren-Elemente unberührt lässt... Meine Version schiebt alles auf, vielleicht mal an einem kleinen Beispiel erklärt:

p1 ist der Poitner auf das zu schreibende Element, p2 der Pointer auf das Element wo ich die Daten hernehme:

p1 p2
|1| |2| |+| |3| - >

p1 p2
|12| |2| |+| |3| ->

p1 p2
|12| |2| |+| |3| ->

p1 p2
|12| |+| |+| |3| ->

|12| |+| |3| |3| nach der Schleife wird dann der überflüssige Rest ( in dem Fall |3| ) gelöscht und man erhält das gewünschte Ergebnis nur dass der Inhalt aus dem dritten Element jetzt im Zweiten ist und der aus dem 4. im 3...

Meine Frage ist jetzt, ist meine Herangehensweise grundsätzlich falsch und/oder unperformant? Oder sollten die Tests das eigentlich tollerieren und meine Implementierung muss irgendwo immernoch falsch sein?

Gruß, Paddy

Re: 1: Frage zu assembleNumbers()

Verfasst: 2. Mai 2015 15:37
von KaeferZuechter
Deine Implementierungsidee wird die Tests nicht bestehen. Ist ein Operator zu Beginn an Stelle 3 und die ersten beiden Elemente werden vereinigt, erwartet der Test die gleiche Referenz später an Stelle 2.

Zudem ist deine Herangehensweise ineffizient, da du auf die Art zum Löschen eines einzelnen Elementes alle nachfolgenden Elemente verschieben musst. Der Sinn einer LinkedList besteht allerdings darin, genau das zu vermeiden.

Re: 1: Frage zu assembleNumbers()

Verfasst: 2. Mai 2015 15:47
von paddy01
Alles klar, danke für die schnelle Antwort

Re: 1: Frage zu assembleNumbers()

Verfasst: 3. Mai 2015 18:18
von LukasP
Ich kann leider nicht nachvollziehen, wo das Problem, mit der Erstellung neuer Objekte ist (Objekte, auf die nicht mehr verwiesen wird, werden vom GarbageCollector doch automatisch entsorgt).
Ausserdem empfinde ich es als umstaendlicher den ersten Kandidaten die 'ganze' Zeit mitzuschleppen, um dem dann einen neuen Wert in data zu schreiben.

edit: ist klar, was verlangt wird