A számítógépek feltalálása óta az emberek ezt a kifejezést használják. Adat ' a továbbított vagy tárolt számítógépes információkra utal. Vannak azonban olyan adatok, amelyek rendeléstípusoknál is léteznek. Az adatok lehetnek számok vagy papírra írt szövegek, elektronikus eszközök memóriájában tárolt bitek és bájtok formájában, vagy az ember elméjében tárolt tények. Ahogy a világ korszerűsödni kezdett, ezek az adatok mindenki mindennapi életének jelentős részévé váltak, és a különféle megvalósítások lehetővé tették számukra, hogy eltérő módon tárolják őket.
Adat tények és számok gyűjteménye, vagy meghatározott formátumú értékek vagy értékek halmaza, amely egyetlen tételérték-készletre utal. Az adatelemek ezután altételekbe kerülnek besorolásra, amelyek az elemek azon csoportja, amelyek nem ismertek az elem egyszerű elsődleges formájaként.
Vegyünk egy példát, ahol egy alkalmazott neve három alelemre bontható: Első, Középső és Utolsó. Az alkalmazotthoz rendelt azonosító azonban általában egyetlen tételnek minősül.
1.ábra: Adatelemek ábrázolása
A fent említett példában az olyan elemek, mint az azonosító, életkor, nem, első, középső, utolsó, utca, helység stb., elemi adatelemek. Ezzel szemben a Név és a Cím csoport adatelemek.
Mi az adatstruktúra?
Adatstruktúra a számítástechnika egyik ága. Az adatstruktúra tanulmányozása lehetővé teszi számunkra, hogy megértsük az adatok szerveződését és az adatáramlás kezelését bármely folyamat vagy program hatékonyságának növelése érdekében. Az adatstruktúra egy sajátos módja az adatok tárolásának és rendszerezésének a számítógép memóriájában, hogy ezek az adatok könnyen visszakereshetők és a jövőben szükség esetén hatékonyan felhasználhatók legyenek. Az adatokat többféleképpen lehet kezelni, például egy adott adatszervezet logikai vagy matematikai modelljét adatszerkezetnek nevezzük.
Egy adott adatmodell hatóköre két tényezőtől függ:
- Először is, eléggé be kell tölteni a struktúrába ahhoz, hogy tükrözze az adatok és egy valós objektum határozott korrelációját.
- Másodszor, a formálásnak olyan egyszerűnek kell lennie, hogy szükség esetén alkalmazkodni lehessen az adatok hatékony feldolgozásához.
Néhány példa az adatstruktúrákra: tömbök, linkelt listák, verem, sor, fák stb. Az adatstruktúrákat széles körben használják a számítástechnika szinte minden területén, például a fordítótervezésben, az operációs rendszerekben, a grafikában, a mesterséges intelligenciában és még sok másban.
Az adatstruktúrák számos számítástechnikai algoritmus fő részét képezik, mivel lehetővé teszik a programozók számára az adatok hatékony kezelését. Döntő szerepet játszik egy program vagy szoftver teljesítményének javításában, mivel a szoftver fő célja a felhasználó adatainak lehető leggyorsabb tárolása és visszakeresése.
css megjegyzés
Az adatstruktúrákhoz kapcsolódó alapvető terminológiák
Az adatstruktúrák bármely szoftver vagy program építőkövei. A megfelelő adatstruktúra kiválasztása egy program számára rendkívül nagy kihívást jelent egy programozó számára.
A következőkben néhány alapvető terminológiát használunk, amikor az adatstruktúrákról van szó:
Attribútumok | ID | Név | Nem | Munka megnevezése |
---|---|---|---|---|
Értékek | 1234 | Stacey M. Hill | Női | Szoftverfejlesztő |
A hasonló attribútumokkal rendelkező entitások an Entitáskészlet . Egy entitáskészlet minden attribútumának van egy értéktartománya, az összes lehetséges érték halmaza, amely az adott attribútumhoz rendelhető.
Az „információ” kifejezést időnként olyan adatokra használják, amelyek jelentéses vagy feldolgozott adatok adott attribútumai vannak.
Az adatszerkezetek szükségességének megértése
Mivel az alkalmazások egyre összetettebbek, és az adatok mennyisége napról napra növekszik, ami problémákhoz vezethet az adatkereséssel, a feldolgozási sebességgel, a többszörös kérés kezelésével és még sok mással kapcsolatban. Az adatstruktúrák különböző módszereket támogatnak az adatok hatékony szervezésére, kezelésére és tárolására. A Data Structures segítségével könnyedén bejárhatjuk az adatelemeket. Az adatstruktúrák hatékonyságot, újrafelhasználhatóságot és absztrakciót biztosítanak.
Miért érdemes adatstruktúrákat tanulnunk?
- Az adatstruktúrák és az algoritmusok a számítástechnika két kulcsfontosságú aspektusa.
- Az adatstruktúrák lehetővé teszik az adatok rendszerezését és tárolását, míg az algoritmusok lehetővé teszik az adatok értelmes feldolgozását.
- Az adatstruktúrák és algoritmusok megtanulása segít abban, hogy jobb programozókká váljunk.
- Hatékonyabb és megbízhatóbb kódot tudunk majd írni.
- A problémákat is gyorsabban és hatékonyabban tudjuk majd megoldani.
Az adatstruktúrák céljainak megértése
Az adatstruktúrák két egymást kiegészítő célt teljesítenek:
java arraylist rendezve
Az adatstruktúrák néhány fő jellemzőjének megértése
Az adatstruktúrák néhány fontos jellemzője:
Adatstruktúrák osztályozása
Az adatstruktúra olyan változók strukturált halmazát adja meg, amelyek különféle módon kapcsolódnak egymáshoz. Ez egy olyan programozási eszköz alapját képezi, amely jelzi az adatelemek közötti kapcsolatot, és lehetővé teszi a programozók számára az adatok hatékony feldolgozását.
Az adatstruktúrákat két kategóriába sorolhatjuk:
- Primitív adatstruktúra
- Nem primitív adatstruktúra
A következő ábra az adatstruktúrák különböző osztályozásait mutatja be.
2. ábra: Adatstruktúrák osztályozása
Primitív adatszerkezetek
- Ezeket az adatstruktúrákat gépi szintű utasításokkal lehet közvetlenül manipulálni vagy működtetni.
- Az alapvető adattípusok, mint pl Egész szám, úszó, karakter , és Boolean a Primitív Adatstruktúrák alá tartoznak.
- Ezeket az adattípusokat más néven Egyszerű adattípusok , mivel olyan karaktereket tartalmaznak, amelyeket nem lehet tovább osztani
Nem primitív adatstruktúrák
- Ezeket az adatstruktúrákat nem lehet közvetlenül gépi szintű utasításokkal manipulálni vagy működtetni.
- Ezeknek az adatstruktúráknak a középpontjában egy olyan adatelem-készlet kialakítása áll, amely vagy homogén (azonos adattípus) ill heterogén (különböző adattípusok).
- Az adatok szerkezete és elrendezése alapján ezeket az adatstruktúrákat két alkategóriára oszthatjuk -
- Lineáris adatstruktúrák
- Nemlineáris adatstruktúrák
Lineáris adatstruktúrák
Az adatszerkezetet, amely megőrzi az adatelemei közötti lineáris kapcsolatot, Lineáris adatszerkezetnek nevezzük. Az adatok elrendezése lineárisan történik, ahol az első és az utolsó adatelem kivételével minden elem az utódokból és az elődekből áll. Ez azonban nem feltétlenül igaz a memória esetében, mivel az elrendezés nem feltétlenül szekvenciális.
A memóriafoglalás alapján a lineáris adatstruktúrákat további két típusra osztják:
A Sor a Static Data Structure legjobb példája, mivel fix méretűek, és adatai később módosíthatók.
Hivatkozott listák, halmok , és Frakk gyakori példái a dinamikus adatstruktúráknak
Lineáris adatstruktúrák típusai
Az alábbiakban felsoroljuk az általunk általában használt lineáris adatstruktúrákat:
1. Tömbök
An Sor egy olyan adatstruktúra, amely több, azonos típusú adatelemet egyetlen változóba gyűjt. Ahelyett, hogy ugyanazon adattípusok több értékét külön változónévben tárolnánk, az összeset egy változóban tárolhatjuk. Ez az állítás nem jelenti azt, hogy bármely programban ugyanannak az adattípusnak az összes értékét egy adott adattípusú tömbbe kell egyesítenünk. De gyakran előfordulnak olyan esetek, amikor ugyanazon adattípusok bizonyos változói egy tömbnek megfelelő módon kapcsolódnak egymáshoz.
A tömb olyan elemek listája, ahol minden elemnek egyedi helye van a listában. A tömb adatelemei ugyanazon a változónéven osztoznak; azonban mindegyik más indexszámot hordoz, amelyet alsó indexnek neveznek. A listából bármelyik adatelemet elérhetjük a listában való elhelyezkedése segítségével. Így a tömbök legfontosabb jellemzője, hogy az adatokat összefüggő memóriahelyeken tárolják, lehetővé téve a felhasználók számára a tömb adatelemeinek áthaladását a megfelelő indexek segítségével.
3. ábra. Egy tömb
A tömbök különböző típusokba sorolhatók:
A tömb néhány alkalmazása:
- Az azonos adattípushoz tartozó adatelemek listáját tárolhatjuk.
- A tömb más adatszerkezetek kiegészítő tárolójaként működik.
- A tömb segít a rögzített szám bináris fa adatelemeinek tárolásában is.
- A tömb mátrixok tárolójaként is működik.
2. Hivatkozott listák
A Linkelt lista egy másik példa egy lineáris adatszerkezetre, amelyet adatelemek gyűjteményének dinamikus tárolására használnak. Ebben az adatstruktúrában az adatelemeket a csomópontok képviselik, amelyek hivatkozásokkal vagy mutatókkal vannak összekapcsolva. Minden csomópont két mezőt tartalmaz, az információs mező a tényleges adatokat, a mutató mező pedig a lista következő csomópontjainak címét tartalmazza. A hivatkozott lista utolsó csomópontjának mutatója egy null mutatóból áll, mivel semmire mutat. A tömböktől eltérően a felhasználó dinamikusan állíthatja be a csatolt lista méretét a követelményeknek megfelelően.
4. ábra. Egy linkelt lista
A linkelt listák különböző típusokba sorolhatók:
A linkelt listák néhány alkalmazása:
- A linkelt listák segítenek nekünk előre meghatározott méretű veremeket, sorokat, bináris fákat és grafikonokat megvalósítani.
- Az operációs rendszer dinamikus memóriakezelési funkcióját is megvalósíthatjuk.
- A csatolt listák lehetővé teszik a matematikai műveletek polinomiális megvalósítását is.
- A Circular Linked List segítségével olyan operációs rendszereket vagy alkalmazási funkciókat valósíthatunk meg, amelyek körbejárják a feladatok végrehajtását.
- A kör alakú linkelt lista a diavetítésben is hasznos, ahol a felhasználónak vissza kell térnie az első diához az utolsó dia bemutatása után.
- A Duplán linkelt listát arra használják, hogy előre és hátra gombokat alkalmazzanak a böngészőben, hogy előre és hátra mozogjanak a webhely megnyitott oldalain.
3. Stack
A Kazal egy Lineáris adatstruktúra, amely követi a LIFO (Last In, First Out) elv, amely lehetővé teszi az olyan műveleteket, mint a beszúrás és a törlés a verem egyik végéről, azaz a tetejéről. A veremeket egymás melletti memória, egy tömb, valamint a nem szomszédos memória, a Linked List segítségével lehet megvalósítani. A Stacks valós példái a könyvhalmok, a kártyapakli, a pénzhalmok és még sok más.
5. ábra. A Stack valós példája
A fenti ábra egy halom valós példáját mutatja, ahol a műveleteket csak az egyik végéről hajtják végre, például új könyvek behelyezését és eltávolítását a verem tetejéről. Ez azt jelenti, hogy a verembe való beszúrás és törlés csak a verem tetejéről történhet. Egyszerre csak a Stack tetejét érhetjük el.
Az elsődleges műveletek a veremben a következők:
6. ábra. Egy verem
A Stack néhány alkalmazása:
- A verem ideiglenes tárolási struktúraként használható rekurzív műveletekhez.
- A verem segédtároló struktúraként is használható függvényhívásokhoz, beágyazott műveletekhez és elhalasztott/halasztott funkciókhoz.
- A Stacks segítségével kezelhetjük a függvényhívásokat.
- A veremeket a különböző programozási nyelvek aritmetikai kifejezéseinek kiértékelésére is használják.
- A veremek az infix kifejezések postfix kifejezésekké alakításában is hasznosak.
- A veremek segítségével ellenőrizhetjük a kifejezés szintaxisát a programozási környezetben.
- A Stacks segítségével párosíthatjuk a zárójeleket.
- A veremekkel megfordíthatunk egy karakterláncot.
- A veremek hasznosak a visszalépésen alapuló problémák megoldásában.
- Használhatjuk a Stacks-et a mélységi kereséshez gráf- és fabejárásban.
- A veremeket az operációs rendszer funkcióiban is használják.
- A veremeket az UNDO és REDO funkciók is használják szerkesztéskor.
4. Farok
hogyan szünteted meg a kijelölést a gimpben
A Sor a veremhez hasonló lineáris adatstruktúra, amely bizonyos korlátozásokkal rendelkezik az elemek beszúrására és törlésére vonatkozóan. Egy elem beszúrása a sorba az egyik végén, az eltávolítás pedig a másik vagy ellentétes végén történik. Ebből arra következtethetünk, hogy a Queue adatstruktúra a FIFO (First In, First Out) elvet követi az adatelemek manipulálásához. A sorok megvalósítása tömbök, linkelt listák vagy veremek segítségével történhet. Néhány valós példa a Várólistákra: sor a jegypénztárnál, mozgólépcső, autómosó és még sok más.
7. ábra. Valós példa a sorra
A fenti kép egy mozijegy-számláló valós illusztrációja, amely segíthet megérteni azt a sort, ahol mindig az elsőként érkező vásárlót szolgálják ki először. Az utolsóként érkező vásárlót kétségtelenül utolsóként szolgálják ki. A sor mindkét vége nyitott, és különböző műveleteket hajthat végre. Egy másik példa egy élelmiszerpálya-sor, ahol az ügyfelet a hátulról helyezik be, míg a vevőt az elülső végén távolítják el, miután nyújtotta a kért szolgáltatást.
A sor elsődleges műveletei a következők:
8. ábra. Sor
A sorok néhány alkalmazása:
latex részleges származéka
- A várólisták általában a Graphs szélességi keresési műveletében használatosak.
- A várólisták az operációs rendszerek Job Scheduler műveleteiben is használatosak, például a billentyűzet puffersora a felhasználók által lenyomott billentyűk tárolására, valamint a nyomtatási puffersor a nyomtató által kinyomtatott dokumentumok tárolására.
- A várólisták felelősek a CPU ütemezéséért, a Feladatütemezésért és a Lemezütemezésért.
- A prioritási sorokat a böngésző fájlletöltési műveletei során használják.
- A sorokat a perifériás eszközök és a CPU közötti adatátvitelre is használják.
- A sorok felelősek a felhasználói alkalmazások által a CPU számára generált megszakítások kezeléséért is.
Nemlineáris adatstruktúrák
A nemlineáris adatstruktúrák olyan adatstruktúrák, amelyekben az adatelemek nincsenek egymás utáni sorrendben elrendezve. Itt az adatok beszúrása és eltávolítása nem valósítható meg lineárisan. Az egyes adatelemek között hierarchikus kapcsolat van.
A nemlineáris adatstruktúrák típusai
Az alábbiakban felsoroljuk az általunk általában használt nemlineáris adatstruktúrákat:
1. Fák
A fa egy nemlineáris adatstruktúra és egy olyan hierarchia, amely csomópontok gyűjteményét tartalmazza úgy, hogy a fa minden csomópontja egy értéket és egy hivatkozáslistát tárol a többi csomópontra (a „gyermekekre”).
A Tree adatstruktúra egy speciális módszer az adatok számítógépen történő elrendezésére és összegyűjtésére, hogy hatékonyabban hasznosítható legyen. Tartalmaz egy központi csomópontot, szerkezeti csomópontokat és élekkel összekapcsolt alcsomópontokat. Azt is mondhatjuk, hogy a fa adatszerkezete összefüggő gyökerekből, ágakból és levelekből áll.
9. ábra. Egy fa
A fákat különböző típusokra oszthatjuk:
A fák néhány alkalmazása:
- A fák hierarchikus struktúrákat valósítanak meg számítógépes rendszerekben, például könyvtárakban és fájlrendszerekben.
- A fákat a webhelyek navigációs szerkezetének megvalósítására is használják.
- A Fák segítségével létrehozhatunk olyan kódot, mint a Huffman-kód.
- A fák a játékalkalmazások döntéshozatalában is hasznosak.
- A fák felelősek a prioritás alapú operációs rendszer-ütemezési funkciók prioritási sorainak megvalósításáért.
- A fák felelősek a kifejezések és utasítások elemzéséért is a különböző programozási nyelvek fordítóiban.
- A fák segítségével adatkulcsokat tárolhatunk az adatbázis-kezelő rendszer (DBMS) indexeléséhez.
- A Spanning Trees lehetővé teszi a döntések irányítását a számítógépes és kommunikációs hálózatokban.
- A fákat a mesterséges intelligencia (AI), a robotika és a videojáték alkalmazásokban megvalósított útkereső algoritmusban is használják.
2. Grafikonok
A gráf egy másik példa a nemlineáris adatszerkezetre, amely véges számú csomópontból vagy csúcsból és az ezeket összekötő élekből áll. A grafikonokat a valós világ problémáinak kezelésére használják, amelyekben a problématerületet hálózatként jelölik, például közösségi hálózatok, áramköri hálózatok és telefonhálózatok. Például egy gráf csomópontjai vagy csúcsai képviselhetnek egyetlen felhasználót a telefonhálózatban, míg az élek a köztük lévő telefonos kapcsolatot.
A G gráf adatstruktúrát olyan matematikai struktúrának tekintjük, amely V csúcsokból és E élek halmazából áll, az alábbiak szerint:
G = (V,E)
10. ábra. Egy grafikon
A fenti ábra egy gráfot ábrázol, amelynek hét csúcsa A, B, C, D, E, F, G, és tíz éle [A, B], [A, C], [B, C], [B, D], [B, E], [C, D], [D, E], [D, F], [E, F] és [E, G].
A csúcsok és élek helyzetétől függően a grafikonok különböző típusokba sorolhatók:
A grafikonok néhány alkalmazása:
- A grafikonok segítenek az útvonalak és hálózatok ábrázolásában a közlekedési, utazási és kommunikációs alkalmazásokban.
- Grafikonok az útvonalak GPS-ben történő megjelenítésére szolgálnak.
- A grafikonok abban is segítenek, hogy a közösségi hálózatokban és más hálózati alapú alkalmazásokban a kapcsolatokat ábrázoljuk.
- A grafikonokat térképészeti alkalmazásokban használják.
- A grafikonok felelősek a felhasználói preferenciák megjelenítéséért az e-kereskedelmi alkalmazásokban.
- A grafikonokat a közüzemi hálózatokban is használják a helyi vagy önkormányzati vállalatok problémáinak azonosítására.
- A grafikonok segítenek a szervezet erőforrásainak felhasználásának és elérhetőségének kezelésében is.
- A grafikonokat a weboldalak dokumentumhivatkozási térképeinek elkészítésére is használják, hogy megjelenítsék az oldalak közötti kapcsolatot hiperhivatkozásokon keresztül.
- A grafikonokat robotmozgásokban és neurális hálózatokban is használják.
Adatstruktúrák alapvető műveletei
A következő részben megvitatjuk azokat a különböző típusú műveleteket, amelyeket az adatok manipulálására végezhetünk minden adatszerkezetben:
- Fordítási idő
- Futásidő
Például a malloc() függvény a C nyelvben adatstruktúra létrehozására szolgál.
Az absztrakt adattípus megértése
Mint a National Institute of Standards and Technology (NIST) , az adatstruktúra információk elrendezése, általában a memóriában, a jobb algoritmus-hatékonyság érdekében. Az adatstruktúrák tartalmaznak csatolt listákat, veremeket, sorokat, fákat és szótárakat. Lehetnek elméleti entitások is, például egy személy neve és címe.
gépirat mindegyik
A fent említett definícióból arra a következtetésre juthatunk, hogy az adatszerkezetben a műveletek a következőket tartalmazzák:
- Magas szintű absztrakciók, például egy elem hozzáadása vagy törlése a listáról.
- Elemek keresése és rendezése a listában.
- A lista legmagasabb prioritású elemének elérése.
Amikor az adatstruktúra ilyen műveleteket hajt végre, azt an Absztrakt adattípus (ADT) .
Meghatározhatjuk adatelemek halmazaként az adatokkal végzett műveletekkel együtt. Az „absztrakt” kifejezés arra utal, hogy az adatokat és a rajtuk definiált alapvető műveleteket a megvalósításuktól függetlenül tanulmányozzuk. Azt tartalmazza, hogy mit tehetünk az adatokkal, nem pedig azt, hogy hogyan.
Az ADI implementáció tárolóstruktúrát tartalmaz az alapvető műveletek adatelemeinek és algoritmusainak tárolására. Az összes adatstruktúra, például egy tömb, linkelt lista, sor, verem stb., az ADT példája.
Az ADT-k használatának előnyeinek megértése
A való világban a programok új megszorítások vagy követelmények következtében fejlődnek, így egy program módosítása általában egy vagy több adatstruktúra megváltoztatását igényli. Tegyük fel például, hogy egy új mezőt szeretnénk beszúrni egy alkalmazott nyilvántartásába, hogy nyomon követhessük az egyes alkalmazottak további részleteit. Ebben az esetben javíthatjuk a program hatékonyságát, ha egy tömböt cserélünk Linked szerkezetre. Ilyen helyzetben nem alkalmas minden olyan eljárás átírása, amely a módosított struktúrát használja. Ezért jobb alternatíva az, ha elválasztjuk az adatstruktúrát a megvalósítási információitól. Ez az elv az absztrakt adattípusok (ADT) használatában.
Az adatstruktúrák néhány alkalmazása
Íme néhány adatszerkezeti alkalmazás:
- Az adatstruktúrák segítenek az adatok rendszerezésében a számítógép memóriájában.
- Az adatstruktúrák az információk adatbázisokban való megjelenítését is segítik.
- Az adatstruktúrák lehetővé teszik az adatok közötti kereséshez algoritmusok megvalósítását (például keresőmotor).
- Használhatjuk az adatstruktúrákat az adatok manipulálására szolgáló algoritmusok megvalósítására (például szövegszerkesztők).
- Az algoritmusokat adatszerkezetek (például adatbányászok) segítségével is megvalósíthatjuk adatok elemzésére.
- Az adatstruktúrák támogatják az adatok generálására szolgáló algoritmusokat (például véletlenszám-generátort).
- Az adatstruktúrák az adatok tömörítésére és kicsomagolására szolgáló algoritmusokat is támogatják (például egy zip segédprogram).
- Az adatstruktúrákat is használhatjuk az adatok titkosítására és visszafejtésére szolgáló algoritmusok megvalósítására (például biztonsági rendszer).
- A Data Structures segítségével olyan szoftvereket építhetünk, amelyek képesek fájlokat és könyvtárakat kezelni (Például egy fájlkezelő).
- Olyan szoftvereket is fejleszthetünk, amelyek Data Structures segítségével grafikákat tudnak megjeleníteni. (Például egy webböngésző vagy egy 3D renderelő szoftver).
Azokon kívül, amint azt korábban említettük, az adatstruktúráknak számos más alkalmazása is segíthet nekünk bármilyen kívánt szoftver létrehozásában.