Sortieren von doppelt verketteter Liste?


12.05.2020, 10:02

Besonders unsicher bin ich mir, wenn man das erste oder letzte Element ein "Eins"-Element ist, muss ich dafür eine Sonderbedingung schreiben, da es ja kein pntr.next.prev bzw. pntr.prev.next gibt?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Du dürftest Probleme bekommen, da du pntr.next überschreibst wenn pntr.value == 1.

Außerdem musst du selbstverständlich die Spezialfälle abdecken, in denen pntr.next oder pntr.prev nicht existieren.

Das machst du am besten so, dass du erst eine Schleife schaltest, die durchläuft, bis die erste 0 kommt, dann entsprechend alles bis dahin ans Ende hängt und dann mit deiner jetzigen Schleife anfängt.

Die jetzige Schliefe lässt du dann auch nur bis zum vorletzen Element laufen und prüfst beim letzten Element gesondert.

AOMkayyy 
Fragesteller
 12.05.2020, 16:34

Ich habe die Abgabe vor ein paar Stunden bereits eingereicht und die Spezialfälle habe ich einmal durch ein weiteres if-else-Statement (für den Fall, dass head auf eine 1 zeigt) abgefangen und das Problem mit dem letzten Element habe ich dadurch gelöst, dass ich die for-Schleife nur bis n-1 habe laufen lassen, das das letzte Element ja zw. den Nullen und den Einsen liegt und somit ist es irrelevant, welchen Wert dieses Element nun hat.

Was meinst du mit deinem ersten Satz, dass habe ich noch nicht so ganz verstanden?

0
Destranix  12.05.2020, 16:43
@AOMkayyy

Wenn du pntr.value == 1 hast, dann setzt du pntr nicht neu. Du bleibst also bei dem einen Element hängen.

1
AOMkayyy 
Fragesteller
 12.05.2020, 17:02
@Destranix

Stimmt, dass habe ich leider komplett übersehen. Naja, schade :P Danke dir!

1