Van-e erre lehetőség (inv. lengyel logika)?
Egyértelműsitett matematikai, logikai kifejezéseket (expressions) szeretnék eltárolni, de nem a szokott módon, bináris fában, hanem láncolt listában.
Akik profibbak ezen a téren, azok szerint vajon lehetséges ez?
jaj neeee!
:)))
Amit Te magad linkeltél sem az.
"If the expression is written down as a binary tree and a postorder traversal of the tree is undertaken the result is the RPN expression."
Tehát a bináris fa bejárásából számolható a fordított lengyel forma. De arról szó sincs, hogy, azt binárs faként kéne tárolni. Ismétlem, pont az a lényege, hogy az már egy lineáris adathalmaz.
Balról jobbra bepakolod egy láncolt listába és készen vagy.
Hol van a probléma, ami miatt ez még nincs kész?
A dolog célja, a könnyű befogadhatóság, az érthetőség.
A bináris fa megvalósitása jellemzően pointeres, az meg nehezen emészthető, igy maradna az, hogy a bináris fát mint adatszerkezetet tömbösen ábrázoljuk, de ez hasonlóan bonyolult lenne egy kezdő számára, mint a pointeres megvalósitás.
Ezért gondoltam arra, hogy első lépésben a kifejezést, zárójelek nélkül eltárolom egy egyszeresen láncolt listában. Tehát az operátorokat és az operandusokat egy olyan tömbben, amelynek az indexei a mellettük levő, a sorban utánuk következő elemre mutatnak, tehát 1 -> 2 -> 3 -> 4 -> 5 -> 6.
Ezután jön az RPN-esités, ami nem áll másból, mint a tömbelemek mutatóinak (ez a fentebbi lista) átszámozása és kész.
Ezt már le is lehet tárolni, ki is lehet értékelni, ráadásul, csakis egyféleképpen, a lista végigjárásával, tehát hiba kizárva.
Bárhova is nézel, az infix to postfix megvalósitás mindenütt binary tree alapú, ami ebben a felhasználásban ugyan nagyon hasonló a láncolt listához, csak mégsem egyenlő vele.
Eleve, a bináris fa két irányba ágazik el. A láncolt lista meg egyetlen köv. elemre mutat, meg egy előzőre, ha kétirányú és ennyi.
De a bináris fa nem lineáris adatszerkezet (és nem adathalmaz).
Bocs, de Te csupa hülyeséget irsz.
A bináris fa és a valóban lineáris adatszerkezet (láncolt lista) más.
Te ott kevered, hogy a bináris fa kifejtése során egy lineáris adathalmazt kapsz eredményül. Na de az még nem feltétlenül megfelelő (pl. inorder már gáz), ráadásul, attól még a bináris fa nem lesz lineáris adatszerkezet, hogy te lineárisan kiolvasod bizonyos adattagjait.
Ennek az egész bohóckodásnak az égvilágon semmi értelme.
A pointeres megvalósítás bonyolult, ezért inkább láncolt listával csinálnád, ami pontosan egy pointeres megvalósítás.
Semmi értelme.
Igazából akkor azt kérdezed, hogy hogyan kell infixből postfixet csinálni anélkül, hogy bináris fát kellene használni?
Akkor így:
Ehhez csak stack szükséges
Köszi, de Te hagyd inkább abba, mert nem tudom, hol képeztek, de nagyon komoly gondok vannak nálad.
A megvalósitást ismerem, tanultam, ezerféleképpen megcsinálom neked, nem ez a kérdés. Azzal megint hülyeséget irsz, hogy a láncolt lista pointeres lehetne csak?
Ugyan miért? Egyszeresen láncolt, ami egy sima dinamikus 1D tömb és kész.
Remekül ábrázolható, egyszerűen implementálható, ennél több nem is kell.
Mellesleg, van gyakorlati haszna is az egésznek, csak ezzel nem akartam bonyolitani a kérdést.
#17-es vagyok remélem ezt nem nekem címezted.
Mellesleg egy dimenziós dinamikus tömb az nem láncolt lista, hanem dinamikus tömb. Ez két különböző adatszerkezet.
Annak cimeztem, aki irta a láncolt listára, hogy az csak pointeres lehet.
Az 1D tömb (vektor) az lehet a láncolt lista egyik fajta megvalósitása.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!