Struktúra nélküli adatszerkezetek


Az egyes adatelemek függetlenek, nincs közöttük kapcsolat. Az elemek között nincs sorrend, mindegy, hogy hol helyezkednek el egymáshoz képest. Az egyes elemekről meg tudom mondani, hogy az adatszerkezetnek elemei-e, még ha megkeverem őket, akkor is.


HALMAZ (SET)

Matematikai halmazfogalom megjelenése adatszerkezet szinten.


MULTIHALMAZ (MULTISET, BAG)

Olyan speciális halmaz, amely a halmaztól eltérően ismétlődést is megenged, tehát lehetnek benne azonos elemek.
Mindkét adatszerkezet dinamikus és homogén. Beszélhetünk üreshalmazról is, viszont végtelen halmaz, mint adatszerkezet nem létezik.
Speciális adatszerkezeti műveleteik vannak: (., ., ., \ | IN, +, *, -)
., IN: Segítségükkel meg lehet állapítani, hogy egy adott elem benne van-e a halmazban, vagy sem. Eredménye mindig logikai érték.
., +: A multihalmazban az unió az összes elem unióját jelenti. Ha A . B = C , akkor |A| + |B| = |C|.
., *: Ugyanez igaz a metszetképzésre is.

Műveletek
Létrehozás:

Bővítés: Unióképzéssel.
Törlés: Különbségképzéssel.
Csere: Nem létezik, mert nem tudom megfogni az elemeket. Szimulált cserét hajthatok végre, ha kitörlök egy elemet, és újat viszek be helyette.
Keresés: Nincs, mert nem tudom megfogni az elemeket.
Rendezés: Nem értelmezhető. A rendezett halmaz nem halmaz, hanem egy másik adatszerkezet. Gyakran nincs is értelme a rendezésnek.
Bejárás: Nincs, mert nem tudom megfogni az elemeket.
Feldolgozás: A definiált műveletek alkalmazása.

A halmazok között értelmezhető az összehasonlítási művelet. Két halmaz egyenlő, ha ugyanazokat az elemeket tartalmazza, egyébként nem. Ha az egyik halmaz részhalmaza a másiknak, akkor az a kisebb: H . K › H < K.
A halmazok reprezentációja a karakterisztikus függvényen alapul, általában folytonos tárolást alkalmaznak. A reprezentációs szinten sorrend van, amikor a halmaz elemeit egy sorrendiséggel rendezett tárhelyre képezzük le. Annyi bitet foglalunk le, amennyi halmazelem lehetséges. Mivel a tár véges, a tárhely kicsi, ezért tudom, hogy maximálisan hány eleme van a halmaznak, és sorrendbe rakom őket. A biteket 1-re állítom, ha az adott elem benne van a halmazban, 0-ra, ha nincs benne. Az üreshalmaznak minden bitje 0, ha pedig minden elem benne van a halmazban, akkor minden bit 1-es. Ez a karakterisztikus függvény.
Az, hogy a halmaz elemei hol vannak, az implementáció dolga, a felhasználónak nem szabad, nem illik tudni. A karakterisztikus függvény előnye az, hogy az összes halmazművelet visszavezethető logikai műveletre.


Az "eleme" műveletet a processzor eltolással, shift-tel valósítja meg.

Egy szintet vissza, vagy vissza a főmenübe.