Hogyam tudnám megvalósítani ezt az adatszerkezetet cp++-ban?
Adott egy kétirányú láncolt lista. Ennek megvalódításával nincs gond: van egy List classom, benne egy Node struct(érték, pointer az előzőre, pointer a következőre) és Node-ra mutató head, tail, current pointerek.
A probléma a következő: ehhez nekem hozzá kell csatolnom még néhány másik láncolt listát, ami az előzőből származik.
Pl:
(1.) lista: 1-2-3-4-5
(2.) lista: 1 - 3 - 5
(3.) lista: 1 - 3
Tehát itt az 1.2.3. listáknak mind van head, tail, current eleme, és mindegyik egymás alatti listában lévő azonos elem össze kell, hogy legyen kötve egymással.
Még annyi, hogy ha az 1.listához hozzáadok egy elemet, 50% eséllyel azonnal hozzá kell adnom a következő szinten lévő, azaz 2.listához.
Elméletben úgy csinálnám, hogy kiegészíteném a Node elemeket egy pointerrel, ami a következő szinten lévő, azonos értékű Node-ra mutat. De ez csak a Node-okat kapcsolja össze, és nem tudom, hogy a 2.,3. szinten lévő elemeket hogyan szervezzem listába, és a listákat hogyan kössem össze.
Mivel kéne kiegészítenem az adatszerkezetem, hogy ezt meg tudjam valósítani?
Bocsi, a reszleteket tenyleg kihagytam, szoval:
Ertek alapjan szurok be, novekvo ertek alapjan rendezek. Nem fordulhat elo ugyanaz az ertek tobbszor.
Egy listaban 2^10 elem lehet legfeljebb es max 10-15 lista van.
Meg mindig eleg zavaros. Most akkor mindig csak az elso listaba lehet elemeket beszurni es 50% esellyel hozzaadodik a masodikhoz is? De akkor hogy lesz harmadik lista pl? Vagy barmelyik listaba lehet beszurni es mindnel van 50% esely, hogy bekerul a kovetkezobe?
Eleve van X db lista, vagy a beszurasokkor jonnek letre ujak?
Az oke, hogy az azonos elemeket ossze akarod kotni, de azt irod, hogy a listakat is. Azt hogy? Az elso lista tailje legyen a masodik lista headje vagy mi?
Se fule se farka az egesznek. Jo lenne, ha leirnad a konkret feladatot, vagy, hogy mire akarod ezt hasznalni, vagy mit akarsz megvalositani vele.
Ha jól értem, akkor csak annyit kell tenni, hogy a struktúrába beteszel egy újabb adattagot, pl. nevezzük "nextlist"-nek és az a megfelelő helyre mutat. Ha nem lehet továbbmenni adott elemből a másik listába, akkor szimplán null értéket kap. Ha visszafelé is lehet menni, akkor legyen egy "prevlist" is.
Példa:
* Nyilak: bejárhatóság iránya (a képen: next, prev, nextlist; tehát ebben az implementációban speciel nem lehet visszamenni a listák között).
* Piros útvonal: Egy lehetséges bejárás (1-> 2-> 3-> (2.lista)3-> 5).
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!