Kezdőoldal » Számítástechnika » Programozás » Hogyam tudnám megvalósítani...

Hogyam tudnám megvalósítani ezt az adatszerkezetet cp++-ban?

Figyelt kérdés

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?



2020. okt. 14. 08:21
 1/5 anonim ***** válasza:
74%
Hat ez eleg keves informacio. Rendezettnek kell lennie a listaknak? Ha igen, ertek alapjan novekvo? Ha nem, akkor mi alapjan szursz be? Index, ertek? Elofordulhat ugyanaz az ertek tobbszor ugyanabban a listaban? Nagysagrendileg hany lista lehet es hany elem lehet egy listaban? Milyen komplexitas a cel, O(1) beszuras vagy mondjuk O(n) is megfelelo? Mi a celod ezzel?
2020. okt. 14. 09:13
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:

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.

2020. okt. 14. 17:43
 3/5 anonim ***** válasza:

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.

2020. okt. 14. 18:43
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

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:

[link]


* 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).

2020. okt. 15. 02:01
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:
Még valami: Ha szükséges tudni azt is, hogy melyik listában vagyunk éppen, akkor mondjuk beállítasz még egy "currentlist" adattagot is, gondolom az okozza a nehézséget, hogy te a head, tail, current-et akarnád állítgatni.
2020. okt. 15. 02:06
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!