Segítség egyszerű láncolt listás algoritmusok megértésében (pseudokód)?
Van két algoritmusom, amelyben amikor két elem közé szúrunk be, vagy törlünk a hivatalos megoldás segédváltozót használ. A kérdésem, hogy erre miért van szükség. Nem egyenértékű a két megoldás?
1.hivatalos a beszúrós algoritmushoz
új.köv <- p
e.köv <- új
2.nekem átláthatóbb
új.köv <- p.köv
p.köv <- új
Nagyon szépen köszönöm a segítséget.
30 éve programozok, 15 éve (diploma óta) ebből élek, de ilyen olvashatatlan kakát ritkán láttam eddig.
Viszont a two steps from hell legalább hallgatható
Nem, nem egyenértékű. Gondold végig.
Először a rendezett listában megkeresed az első olyan elemet, ami a sorban hátrébb esik, mint az új elem. Tehát pl ha az új érték kulcsa 9, akkor addig megy, amíg a p kulcsa 9 vagy 10 nem lesz. Az e ugye a p előtti elem lesz.
A hivatalos kód az új elemet az e és a p közé szúrja be, a te kódod meg a p után. Tehát ha az új elem kulcsa 9, a p kulcsa pedig 10, akkor máris rossz lesz a sorrend.
#2 Nem egészen, mert a segédváltozó kivétele azt is jelenti, hogy nem p-re, hanem p->köv-re ellenőrzünk a ciklusban. És így működni fog. Ennek az egyetlen hátulütője, hogy a hivatalos megoldás ciklusának elgelső iterációja így kimarad, tehát azt az esetet, ha egyszer sem futna le a hivatalos ciklus külön le kell ellenőrizni az elején a módosított változatban.
Előnye: Mivel minden hivatkozás p-ből indul, így nem történhet meg az a baki, hogy a segédváltozót valahol nem igazítjuk a p-hez és elcsúszik a dolog. Ez nyilván összetettebb algoritmusokban releváns.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!