Kingston_Pendrive/Suli/13.b/Programozás (Tusjak Brigitta)/Elmélet/2024. 11. 15.txt

21 lines
2.1 KiB
Plaintext
Raw Normal View History

2024-11-19 18:04:02 +00:00
Adatstruktúra interfészek
A kollekcióhoz kapcsolódó interfészek közül az egyik legfontosabb az IEnumerable<T> interfész. Ez teszi lehetővé, hogy mindegyik.
Az absztrakció következő szintje az IReadOnlyCollection<T> és ICollection<T> interfészek. Az ICollection<T> egy módosítható kollekciót ír le, aminek az elemei törölhetőek és bővíthetőek. Az IReadOnlyCollection<T> pedig egy olyant, amiből csak olvasni tudunk, de tudjuk az elemek számát.
Az olyan típusok esetén, mint a lista, halmaz és asszociatív tömb kapunk speciális interfészeket, mind olvasható és módosítható változatban is.
Láncolt lista
A tömb adatszerkezet kiváló ha előre tudjuk, hogy mennyi elemre van szükségünk. A bővítés csak úgy lehetséges, hogy létrehozzuk egy újabb tömböt, aminek a mérete a hozzáadandó elemek számával meg van növelve. Az új tömbbe átmásoljuk a tömb elemeit, majd az új tömbhöz hozzáadjuk az új elemeket. Végezetül pedig töröljük az eredeti tömböt.
Az algoritmus leírásából kiolvasható, hogy ez nem éppen ideális, mivel a sebességre igen negatív hatással van a másolás. Továbbá a másolás folyamán egy rövid időre duplázódik a programunk memóriahasználata.
Egy sokkal jobb megoldás lehet nagy mennyíségú, előre nem ismert számú adat tárolására a láncolt lista szerkezet.
A láncolt lista egy eleme két részből épül fel. Egyrészt tartalmazza a tárolni kívánt adatot, vagy adatokat és tartalmaz egy olyan mutatót, ami a lista egy másik elemét mutatja. Ha referencia a következő elemre nem létezik, akkor a lánc végén vagyunk.
A láncolt lista a dinamikus tömbökhoöz képest hátránya a közbülső elemek elérhetőségéből ered. Míg egy tömb esetén ha tudjuk, hogy a k. elemet szeretnénk elérni, akkor a tömb idnexelésével rögtön hozzáférhetünk ehhez az adathoz, addig a láncolt listában a lista elejéről indulva a mutatókon keresztül addig kell lépkedni, míg a k. elemhez nem érünk. A véletlenszerű lista elem megtalálása a lista hosszávak arányos időt igényel.