Kezdőoldal » Számítástechnika » Programozás » Mikor használ egy programozó...

Mikor használ egy programozó láncolt listákat? És a fákat mikor használják?

Figyelt kérdés
Nem tudok kitalálni olyan feladatot amihez ez kéne.
2012. júl. 1. 11:39
 1/7 iostream ***** válasza:

Láncolt listát akkor használsz, ha nagyméretű ojjektumokat akarsz úgy kezelni, hogy gyakran kell a sorrendjükön változtatni, pl a közepére beszúrással, onnan törléssel. Meg ha kimérted, hogy az gyorsabb, mint a vector.


A fáknak meg általában van egy tulajdonsága, ami vonzóvá teszi őket, pl a rendezőfák rendezve tartják az elemeiket (egy bizonyos bejárás szerint), de nézd meg pl a TRIE adattípust, az is egy érdekes dolog.


Amúgy semmilyen feladathoz nem KELL ilyen adattípus, csak van, amihez kényelmesebb.


Pl a C++-os [multi]set/map is fával van implementálva, és erre a feladatra tényleg ez a legkézenfekvőbb megoldás, még ha nem is a leghatékonyabb.

2012. júl. 1. 11:47
Hasznos számodra ez a válasz?
 2/7 anonim ***** válasza:

Így van, egy láncolt listába könnyebb beszúrni egy elemet, vagy törölni, mint egy tömbszerű listából, könnyebb például megtartani a rendezettséget egy nagyobb lista esetén. Ráadásul nem is kell azonos méretűnek/típusúnak lennie az elemeknek. (Bár illik.)


Hátránya, hogy csak szekvenciálisan kereshető benne egy adott elem, nem lehet számítani az elemek címét, mint a tömb esetén.


[link]

2012. júl. 1. 11:56
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:

"Ráadásul nem is kell azonos méretűnek/típusúnak lennie az elemeknek."

Mielőtt félreértés lenne, ezt úgy értem, hogy elég ha objektumok esetén egy közös ősosztályra mutat a next pointer. :)

2012. júl. 1. 11:58
Hasznos számodra ez a válasz?
 4/7 anonim ***** válasza:
Fákban például nagyon könnyű keresni. A régi dbf fájlok ntx indexe is egy fa struktúra volt, nagyon gyors keresést (seek-elést) tett lehetővé. Hátránya, hogy a karbantartása, egyensúlyban tartása erőforrás-igényes.
2012. júl. 1. 12:20
Hasznos számodra ez a válasz?
 5/7 iostream ***** válasza:
Vagy ott van a btrfs, ami ugye b-tree-t használ.
2012. júl. 1. 14:03
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:
100%

Képzelj el egy adatbázist mely tartalmazza az összes (10 millió) magyar ember személyi igazolvány számát, születési dátumát, nevét stb.

Egyszerűség kedvéért csak személyi szám szerint keresünk. Ha az adatokat rendezetlenül táruljuk egyszerűen egy tömbbe és keresünk egy embert akkor legrosszabb esetben végig kell nézni mind a 10 millió-t, átlagosan 5 millió lépés kell, ezzel szemben egy tökéletesen kiegyensúlyozott bináris keresőfában legrosszabb esetben is log2(10 millió) azaz 24 lépés kell azért ez elég szép sebességkülönbség, viszont ennek a egyensúlyban tartása ,karbantartása nagyon műveletigényes, ha meg nem tartjuk karban sehogy akkor elveszítjük a gyors kereshetőségét, ha valamelyik részfa aránytalanul nagyobb mint a párja vagyis ha elfajuló a fa.

@12:20

"Hátránya, hogy a karbantartása, egyensúlyban tartása erőforrás-igényes."

Viszont ez mégsem igaz, az is nagyon jó ha nem teljesen kiegyensúlyozott cserébe a karbantartása is hatékony. Első ilyen ön-kiegyensúlyozó bináris fa az AVL fa volt. Ez legrosszabb esetben 1,44x rosszabb mint a tökéletesen kiegyensúlyozott fa. Vagyis visszatérve a személyi számos példára a legrosszabb keresési idő nem 24 lépés hanem 24*1,44 = 35 lépés szemben a 10 millióval igen jó.

2012. júl. 1. 14:53
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:

Az ntx ráadásul nem is bináris fa volt, henem ha jól emlékszem 12-utas, és a log2-es keresésnél is gyorsabb volt.

Amúgy igaz, nem kellett folyamatosan helyrehozni, elég volt akkor, ha nem terhelte más a rendszert.

12:20 voltam.

2012. júl. 1. 20: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!