Mis on andmestruktuur?

Andmestruktuur on arvutiteaduse mõiste, mis viitab teatud teabe kogumise ja korraldamise meetodile. Kõik andmestruktuurid kasutavad teavet selle kohta, kus teatud andmeosa arvuti mälus asub, et neile andmetele juurde pääseda ja need teiste andmetega ühendada.
Andmestruktuurid loovad ühe paljudest erinevatest seostest üksikute teabetükkide vahel. Erinevat tüüpi andmestruktuurid on erinevatel eesmärkidel tõhusamad ja kodeerimise raskusaste on andmestruktuuri tüüpide lõikes väga erinev.

Massiivid on ühed lihtsaimad andmestruktuurid, kuid on siiski väga võimsad tööriistad teabe korraldamiseks. Massiivis määratakse elementidele järjestikused mäluaadressid, mis võimaldab massiivi mis tahes üksuse mäluaadressi väga kiiresti määrata lihtsate matemaatiliste arvutuste abil, mis on peamine eelis. Massiive võib ette kujutada suvalises arvus mõõtmetes eksisteerivatena. Ühemõõtmelist massiivi võib kujutada loendina, kahemõõtmelist massiivi tabelina ja kolmemõõtmelist massiivi üksikute lahtrite kuubina. Võib esineda ka rohkem kui kolmemõõtmelisi massiive.

Lingitud loendid on veel üks lihtne, kuid väga oluline andmestruktuuri tüüp. Lingitud loendis koosneb iga sõlm muutujast, mis sisaldab nii tegelikke andmeid kui ka loendi järgmist elementi tuvastavat teavet. Lingitud loendist saab seega liikuda seni, kuni on teada esimese sõlme aadress. Seda tüüpi andmestruktuur on mitmekülgne, kuna see sobib dünaamiliseks kasvuks, kuna uusi sõlmi saab hõlpsasti igal ajal määrata. Loendis eelmise sõlme asukohta sisaldava muutuja lisamine võimaldab seda tüüpi andmestruktuuri mõlemas suunas läbida.

Puud järjestavad sõlmed hierarhiliselt, alustades juursõlmest ja laskudes läbi mitme sõlmekihi, kuni kõik vajalikud andmed on struktuurisse mahutatud. Tavaliselt sorteeritakse puu elemendid mingil viisil. Puud võivad rakendada sortimist ja võivad seetõttu pakkuda palju kiiremat juurdepääsu salvestatud andmetele, kuna iga hargnemine jätab tähelepanuta terve hulga teavet, mis tuleks lingitud loendis läbi sorteerida.

Räsitabeleid kasutatakse mäluaadressi määramiseks, kuhu antud andmeosa tuleb salvestada, kasutades võrrandit nende andmete teisendamiseks mäluaadressiks. Need võivad olla väga tõhusad struktuurid massiivi andmete salvestamiseks ja toomiseks.

Kõik andmestruktuurid on loodud selleks, et vähendada käskude arvu, mida arvuti peab konkreetse teabe leidmiseks täitma. Erinevat tüüpi andmestruktuurid sobivad erinevat tüüpi andmestruktuuride jaoks, kuid enamik kaasaegseid programmeerimiskeeli pakuvad laia valikut andmestruktuuride tuge või tööriistu, mis võimaldavad programmeerijatel oma andmestruktuure kodeerida.