Od izuma računala ljudi koriste izraz ' Podaci ' za upućivanje na informacije o računalu, bilo prenesene ili pohranjene. Međutim, postoje podaci koji postoje iu vrstama naloga. Podaci mogu biti brojevi ili tekstovi napisani na komadu papira, u obliku bitova i bajtova pohranjenih u memoriji elektroničkih uređaja, ili činjenice pohranjene u umu osobe. Kako se svijet počeo modernizirati, ovi su podaci postali značajan aspekt svačijeg svakodnevnog života, a različite implementacije omogućile su im da ih drugačije pohranjuju.
Podaci je zbirka činjenica i brojki ili skup vrijednosti ili vrijednosti određenog formata koji se odnosi na jedan skup vrijednosti stavke. Podatkovne stavke se zatim klasificiraju u podstavke, što je skupina stavki koje nisu poznate kao jednostavni primarni oblik stavke.
Razmotrimo primjer gdje se ime zaposlenika može raščlaniti na tri podstavke: ime, srednje i prezime. Međutim, ID dodijeljen zaposleniku općenito će se smatrati jednom stavkom.
Slika 1: Predstavljanje podatkovnih stavki
U gore navedenom primjeru, stavke kao što su ID, Dob, Spol, Ime, Sredina, Prezime, Ulica, Lokalitet itd. su elementarne podatkovne stavke. Nasuprot tome, Ime i Adresa su grupne podatkovne stavke.
Što je struktura podataka?
Struktura podataka je grana informatike. Proučavanje strukture podataka omogućuje nam razumijevanje organizacije podataka i upravljanja protokom podataka kako bismo povećali učinkovitost bilo kojeg procesa ili programa. Struktura podataka je poseban način pohranjivanja i organiziranja podataka u memoriji računala tako da se ti podaci mogu lako dohvatiti i učinkovito koristiti u budućnosti kada to bude potrebno. Podacima se može upravljati na različite načine, kao što je logički ili matematički model za određenu organizaciju podataka poznat kao struktura podataka.
Opseg određenog podatkovnog modela ovisi o dva čimbenika:
- Prvo, mora biti dovoljno učitan u strukturu da odražava definitivnu korelaciju podataka s objektom iz stvarnog svijeta.
- Drugo, formiranje bi trebalo biti tako jednostavno da se može prilagoditi za učinkovitu obradu podataka kad god je to potrebno.
Neki primjeri struktura podataka su nizovi, povezani popisi, stog, red čekanja, stabla, itd. Strukture podataka naširoko se koriste u gotovo svim aspektima računalnih znanosti, tj. dizajnu prevoditelja, operativnim sustavima, grafici, umjetnoj inteligenciji i mnogim drugim.
Strukture podataka glavni su dio mnogih algoritama informatike jer omogućuju programerima da učinkovito upravljaju podacima. Igra ključnu ulogu u poboljšanju performansi programa ili softvera, budući da je glavni cilj softvera pohraniti i dohvatiti korisničke podatke što je brže moguće.
poboljšana for loop java
Osnovna terminologija vezana uz strukture podataka
Strukture podataka su građevni blokovi bilo kojeg softvera ili programa. Odabir odgovarajuće strukture podataka za program iznimno je izazovan zadatak za programera.
Slijede neke temeljne terminologije koje se koriste kad god su uključene strukture podataka:
Atributi | iskaznica | Ime | Spol | Naziv radnog mjesta |
---|---|---|---|---|
Vrijednosti | 1234 | Stacey M. Hill | Žena | Programer softvera |
Entiteti sa sličnim atributima čine an Skup entiteta . Svaki atribut skupa entiteta ima raspon vrijednosti, skup svih mogućih vrijednosti koje se mogu dodijeliti određenom atributu.
Izraz 'informacija' ponekad se koristi za podatke s danim atributima smislenih ili obrađenih podataka.
Razumijevanje potrebe za podatkovnim strukturama
Kako aplikacije postaju sve složenije, a količina podataka svakim danom raste, to može dovesti do problema s pretraživanjem podataka, brzinom obrade, obradom više zahtjeva i mnogim drugim. Strukture podataka podržavaju različite metode za organiziranje, upravljanje i učinkovito pohranjivanje podataka. Uz pomoć struktura podataka, možemo lako preći podatkovne stavke. Strukture podataka osiguravaju učinkovitost, mogućnost ponovne upotrebe i apstrakciju.
Zašto bismo trebali naučiti strukture podataka?
- Strukture podataka i algoritmi dva su ključna aspekta računalne znanosti.
- Strukture podataka omogućuju nam organiziranje i pohranjivanje podataka, dok nam algoritmi omogućuju smislenu obradu tih podataka.
- Učenje struktura podataka i algoritama pomoći će nam da postanemo bolji programeri.
- Moći ćemo napisati kod koji je učinkovitiji i pouzdaniji.
- Također ćemo moći brže i učinkovitije rješavati probleme.
Razumijevanje ciljeva struktura podataka
Strukture podataka zadovoljavaju dva komplementarna cilja:
Razumijevanje nekih ključnih značajki struktura podataka
Neke od značajnih značajki struktura podataka su:
Klasifikacija struktura podataka
Struktura podataka isporučuje strukturirani skup varijabli međusobno povezanih na različite načine. On čini osnovu alata za programiranje koji označava odnos između elemenata podataka i omogućuje programerima učinkovitu obradu podataka.
Strukture podataka možemo klasificirati u dvije kategorije:
- Primitivna struktura podataka
- Neprimitivna struktura podataka
Sljedeća slika prikazuje različite klasifikacije struktura podataka.
Slika 2: Klasifikacije struktura podataka
Primitivne strukture podataka
- Ovim strukturama podataka može se manipulirati ili njima upravljati izravno pomoću instrukcija na razini stroja.
- Osnovni tipovi podataka poput Cijeli broj, float, znak , i Booleov potpadaju pod primitivne strukture podataka.
- Ove se vrste podataka također nazivaju Jednostavni tipovi podataka jer sadrže znakove koji se ne mogu dalje dijeliti
Neprimitivne strukture podataka
- Ovim strukturama podataka ne može se manipulirati niti njima upravljati izravno pomoću uputa na razini stroja.
- Fokus ovih struktura podataka je na formiranju skupa podatkovnih elemenata koji je ili homogena (isti tip podataka) ili heterogena (različiti tipovi podataka).
- Na temelju strukture i rasporeda podataka, te strukture podataka možemo podijeliti u dvije podkategorije -
- Linearne strukture podataka
- Nelinearne strukture podataka
Linearne strukture podataka
Podatkovna struktura koja čuva linearnu vezu između svojih podatkovnih elemenata poznata je kao linearna podatkovna struktura. Raspored podataka je linearan, pri čemu se svaki element sastoji od nasljednika i prethodnika osim prvog i posljednjeg podatkovnog elementa. Međutim, to nije nužno točno u slučaju memorije, budući da raspored možda nije sekvencijalan.
Na temelju raspodjele memorije, linearne strukture podataka dalje se klasificiraju u dvije vrste:
The Niz je najbolji primjer statičke strukture podataka budući da imaju fiksnu veličinu, a njezini se podaci mogu kasnije mijenjati.
Povezani popisi, nizovi , i repovi su uobičajeni primjeri dinamičkih struktura podataka
Vrste linearnih struktura podataka
Slijedi popis linearnih struktura podataka koje općenito koristimo:
1. Nizovi
An Niz je podatkovna struktura koja se koristi za prikupljanje više podatkovnih elemenata iste vrste podataka u jednu varijablu. Umjesto pohranjivanja višestrukih vrijednosti istih tipova podataka u zasebnim nazivima varijabli, mogli bismo ih pohraniti sve zajedno u jednu varijablu. Ova izjava ne znači da ćemo morati ujediniti sve vrijednosti iste vrste podataka u bilo kojem programu u jedan niz te vrste podataka. Ali često će biti trenutaka kada su neke specifične varijable istih tipova podataka povezane jedna s drugom na način prikladan za niz.
Niz je popis elemenata gdje svaki element ima jedinstveno mjesto na popisu. Podatkovni elementi niza dijele isto ime varijable; međutim, svaki nosi drugačiji indeksni broj koji se naziva indeks. Bilo kojem podatkovnom elementu s popisa možemo pristupiti uz pomoć njegovog položaja na popisu. Dakle, ključna značajka nizova koju treba razumjeti jest da su podaci pohranjeni na neprekidnim memorijskim lokacijama, što korisnicima omogućuje da prolaze kroz podatkovne elemente niza koristeći njihove odgovarajuće indekse.
testiranje softvera
Slika 3. Niz
Nizovi se mogu klasificirati u različite vrste:
Neke primjene polja:
- Možemo pohraniti popis elemenata podataka koji pripadaju istoj vrsti podataka.
- Niz djeluje kao pomoćna pohrana za druge strukture podataka.
- Niz također pomaže u pohrani podatkovnih elemenata binarnog stabla fiksnog broja.
- Niz također djeluje kao pohrana matrica.
2. Povezani popisi
A Povezani popis je još jedan primjer linearne podatkovne strukture koja se koristi za dinamičko pohranjivanje zbirke podatkovnih elemenata. Elementi podataka u ovoj strukturi podataka predstavljeni su čvorovima, povezanim pomoću veza ili pokazivača. Svaki čvor sadrži dva polja, informacijsko polje sastoji se od stvarnih podataka, a polje pokazivača sastoji se od adresa sljedećih čvorova na popisu. Pokazivač posljednjeg čvora povezane liste sastoji se od nultog pokazivača jer ne pokazuje ni na što. Za razliku od polja, korisnik može dinamički prilagoditi veličinu povezanog popisa prema zahtjevima.
Slika 4. Povezani popis
Povezani popisi mogu se klasificirati u različite vrste:
Neke primjene povezanih popisa:
- Povezani popisi pomažu nam implementirati nizove, redove, binarna stabla i grafikone unaprijed definirane veličine.
- Također možemo implementirati funkciju operativnog sustava za dinamičko upravljanje memorijom.
- Povezani popisi također omogućuju implementaciju polinoma za matematičke operacije.
- Možemo koristiti Circular Linked List za implementaciju operativnih sustava ili aplikacijskih funkcija koje Round Robin izvršavanje zadataka.
- Kružni povezani popis također je koristan u dijaprojekciji gdje korisnik zahtijeva da se vrati na prvi slajd nakon što se prikaže zadnji slajd.
- Dvostruko povezani popis koristi se za implementaciju gumba naprijed i natrag u pregledniku za kretanje naprijed i nazad na otvorenim stranicama web stranice.
3. Stogovi
A Stog je linearna struktura podataka koja slijedi LIFO (Last In, First Out) princip koji omogućuje operacije poput umetanja i brisanja s jednog kraja snopa, tj. s vrha. Stogovi se mogu implementirati uz pomoć kontinuirane memorije, polja, i nekontinuirane memorije, povezane liste. Primjeri hrpe iz stvarnog života su hrpe knjiga, špil karata, hrpe novca i još mnogo toga.
Slika 5. Primjer snopa iz stvarnog života
Gornja slika predstavlja primjer snopa iz stvarnog života gdje se operacije izvode samo s jednog kraja, poput umetanja i uklanjanja novih knjiga s vrha snopa. To podrazumijeva da se umetanje i brisanje u stogu može izvršiti samo s vrha stoga. Možemo pristupiti samo vrhovima hrpe u bilo kojem trenutku.
Primarne operacije u stogu su sljedeće:
sql poredak po datumu
Slika 6. Stog
Neke primjene nizova:
- Stog se koristi kao privremena struktura za pohranu za rekurzivne operacije.
- Stog se također koristi kao pomoćna struktura pohrane za pozive funkcija, ugniježđene operacije i odgođene/odgođene funkcije.
- Pozivima funkcija možemo upravljati pomoću skupova.
- Stogovi se također koriste za procjenu aritmetičkih izraza u različitim programskim jezicima.
- Skupovi su također korisni u pretvaranju infiks izraza u postfiks izraze.
- Stogovi nam omogućuju provjeru sintakse izraza u programskom okruženju.
- Možemo spojiti zagrade koristeći Stacks.
- Stogovi se mogu koristiti za preokretanje niza.
- Skupovi su korisni u rješavanju problema koji se temelje na praćenju unatrag.
- Možemo koristiti Stacks u dubinskom pretraživanju u obilasku grafa i stabla.
- Stogovi se također koriste u funkcijama operativnog sustava.
- Stogovi se također koriste u funkcijama UNDO i REDO u uređivanju.
4. Repovi
A Red je linearna struktura podataka slična stogu s određenim ograničenjima umetanja i brisanja elemenata. Umetanje elementa u red čekanja vrši se na jednom kraju, a uklanjanje na drugom ili suprotnom kraju. Stoga možemo zaključiti da struktura podataka Queue slijedi FIFO (First In, First Out) načelo za manipuliranje elementima podataka. Implementacija redova čekanja može se izvršiti korištenjem polja, povezanih popisa ili nizova. Neki primjeri redova iz stvarnog života su red na šalteru za prodaju karata, pokretne stepenice, autopraonica i mnogi drugi.
Slika 7. Primjer reda čekanja iz stvarnog života
Gornja slika stvarna je ilustracija šaltera za ulaznice za kino koji nam može pomoći da razumijemo red čekanja u kojem je kupac koji prvi dođe uvijek prvi uslužen. Kupac koji dođe zadnji nesumnjivo će biti posljednji uslužen. Oba kraja reda su otvorena i mogu izvršavati različite operacije. Drugi primjer je linija dvorana s hranom gdje se gost ubacuje sa stražnje strane dok se gost uklanja s prednje strane nakon pružanja usluge koju je tražio.
Sljedeće su primarne operacije reda:
powershell vs bash
Slika 8. Red
Neke primjene redova čekanja:
- Redovi se općenito koriste u operaciji pretraživanja širine u Graphovima.
- Redovi se također koriste u operacijama raspoređivača poslova operativnih sustava, poput reda međuspremnika tipkovnice za pohranjivanje tipki koje pritisnu korisnici i reda čekanja međuspremnika ispisa za pohranu dokumenata koje ispisuje pisač.
- Redovi su odgovorni za CPU raspoređivanje, raspoređivanje poslova i raspoređivanje diska.
- Redovi prioriteta koriste se u operacijama preuzimanja datoteka u pregledniku.
- Redovi se također koriste za prijenos podataka između perifernih uređaja i CPU-a.
- Redovi su također odgovorni za rukovanje prekidima koje generiraju korisničke aplikacije za CPU.
Nelinearne strukture podataka
Nelinearne strukture podataka su strukture podataka u kojima elementi podataka nisu poredani redoslijedom. Ovdje umetanje i uklanjanje podataka nije izvedivo na linearan način. Postoji hijerarhijski odnos između pojedinačnih stavki podataka.
Vrste nelinearnih struktura podataka
Slijedi popis nelinearnih struktura podataka koje općenito koristimo:
1. Drveće
Stablo je nelinearna struktura podataka i hijerarhija koja sadrži skup čvorova tako da svaki čvor stabla pohranjuje vrijednost i popis referenci na druge čvorove ('djecu').
Struktura podataka stabla specijalizirana je metoda za organiziranje i prikupljanje podataka u računalu kako bi se učinkovitije koristili. Sadrži središnji čvor, strukturne čvorove i podčvorove povezane preko rubova. Također možemo reći da se struktura podataka stabla sastoji od povezanih korijena, grana i lišća.
Slika 9. Stablo
Drveće se može klasificirati u različite vrste:
Neke primjene drveća:
- Stabla implementiraju hijerarhijske strukture u računalnim sustavima poput direktorija i datotečnih sustava.
- Stabla se također koriste za implementaciju navigacijske strukture web stranice.
- Možemo generirati kod poput Huffmanova koda koristeći Drveće.
- Stabla su također korisna pri donošenju odluka u igračkim aplikacijama.
- Stabla su odgovorna za implementaciju prioritetnih redova za funkcije raspoređivanja OS-a temeljene na prioritetima.
- Stabla su također odgovorna za raščlanjivanje izraza i iskaza u prevoditeljima različitih programskih jezika.
- Stabla možemo koristiti za pohranu ključeva podataka za indeksiranje za sustav upravljanja bazom podataka (DBMS).
- Spanning Trees nam omogućuje usmjeravanje odluka u računalnim i komunikacijskim mrežama.
- Stabla se također koriste u algoritmu za pronalaženje puta implementiranom u aplikacije umjetne inteligencije (AI), robotike i videoigara.
2. Grafikoni
Graf je još jedan primjer nelinearne strukture podataka koja se sastoji od konačnog broja čvorova ili vrhova i bridova koji ih povezuju. Grafikoni se koriste za rješavanje problema stvarnog svijeta u kojem označavaju problemsko područje kao mrežu kao što su društvene mreže, mreže krugova i telefonske mreže. Na primjer, čvorovi ili vrhovi Grafa mogu predstavljati jednog korisnika u telefonskoj mreži, dok rubovi predstavljaju vezu između njih putem telefona.
Struktura podataka Grafa, G, smatra se matematičkom strukturom koja se sastoji od skupa vrhova, V i skupa rubova, E kao što je prikazano u nastavku:
G = (V,E)
Slika 10. Grafikon
Gornja slika predstavlja graf koji ima sedam vrhova A, B, C, D, E, F, G i deset rubova [A, B], [A, C], [B, C], [B, D], [B, E], [C, D], [D, E], [D, F], [E, F] i [E, G].
Ovisno o položaju vrhova i rubova, grafovi se mogu klasificirati u različite vrste:
piton kaminja
Neke primjene grafova:
- Grafikoni nam pomažu predstaviti rute i mreže u aplikacijama za prijevoz, putovanja i komunikaciju.
- Grafikoni se koriste za prikaz ruta u GPS-u.
- Grafikoni nam također pomažu predstaviti međusobne veze u društvenim mrežama i drugim mrežnim aplikacijama.
- Grafikoni se koriste u aplikacijama za mapiranje.
- Grafovi su odgovorni za prikaz korisničkih preferencija u aplikacijama za e-trgovinu.
- Grafikoni se također koriste u komunalnim mrežama kako bi se identificirali problemi koji se postavljaju pred lokalne ili općinske korporacije.
- Grafikoni također pomažu u upravljanju korištenjem i dostupnošću resursa u organizaciji.
- Grafovi se također koriste za izradu mapa veza dokumenata web stranica kako bi se prikazala povezanost između stranica putem hiperveza.
- Grafovi se također koriste u robotskim kretnjama i neuronskim mrežama.
Osnovne operacije podatkovnih struktura
U sljedećem odjeljku raspravljat ćemo o različitim vrstama operacija koje možemo izvesti za manipulaciju podacima u svakoj strukturi podataka:
- Vrijeme kompajliranja
- Vrijeme izvođenja
Na primjer, malloc() funkcija se koristi u jeziku C za stvaranje strukture podataka.
Razumijevanje apstraktnog tipa podataka
Prema Nacionalni institut za standarde i tehnologiju (NIST) , struktura podataka je raspored informacija, općenito u memoriji, radi bolje učinkovitosti algoritma. Strukture podataka uključuju povezane popise, hrpe, redove, stabla i rječnike. Oni također mogu biti teoretski entitet, poput imena i adrese osobe.
Iz gore navedene definicije možemo zaključiti da operacije u strukturi podataka uključuju:
- Visoka razina apstrakcija poput dodavanja ili brisanja stavke s popisa.
- Pretraživanje i sortiranje stavke na popisu.
- Pristup stavci najvišeg prioriteta na popisu.
Kad god struktura podataka obavlja takve operacije, to je poznato kao an Vrsta sažetka podataka (ADT) .
Možemo ga definirati kao skup podatkovnih elemenata zajedno s operacijama nad podacima. Izraz 'sažetak' odnosi se na činjenicu da se podaci i temeljne operacije definirane na njima proučavaju neovisno o njihovoj implementaciji. To uključuje što možemo učiniti s podacima, a ne kako to možemo učiniti.
Implementacija ADI-ja sadrži strukturu pohrane za pohranjivanje podatkovnih elemenata i algoritama za temeljni rad. Sve strukture podataka, kao što su niz, povezani popis, red čekanja, stog itd., primjeri su ADT-a.
Razumijevanje prednosti korištenja ADT-a
U stvarnom svijetu, programi se razvijaju kao posljedica novih ograničenja ili zahtjeva, tako da modificiranje programa općenito zahtijeva promjenu jedne ili više struktura podataka. Na primjer, pretpostavimo da želimo umetnuti novo polje u evidenciju zaposlenika kako bismo pratili više pojedinosti o svakom zaposleniku. U tom slučaju možemo poboljšati učinkovitost programa zamjenom niza povezanom strukturom. U takvoj situaciji, ponovno pisanje svake procedure koja koristi modificiranu strukturu nije prikladno. Stoga je bolja alternativa odvojiti strukturu podataka od informacija o njezinoj implementaciji. Ovo je načelo iza korištenja apstraktnih tipova podataka (ADT).
Neke primjene struktura podataka
Slijede neke primjene struktura podataka:
- Strukture podataka pomažu u organizaciji podataka u memoriji računala.
- Strukture podataka također pomažu u predstavljanju informacija u bazama podataka.
- Strukture podataka omogućuju implementaciju algoritama za pretraživanje podataka (na primjer, tražilica).
- Možemo koristiti strukture podataka za implementaciju algoritama za manipuliranje podacima (na primjer, programi za obradu teksta).
- Također možemo implementirati algoritme za analizu podataka pomoću struktura podataka (na primjer, rudari podataka).
- Strukture podataka podržavaju algoritme za generiranje podataka (Na primjer, generator slučajnih brojeva).
- Strukture podataka također podržavaju algoritme za komprimiranje i dekomprimiranje podataka (Na primjer, uslužni program za zip).
- Također možemo koristiti strukture podataka za implementaciju algoritama za šifriranje i dešifriranje podataka (na primjer, sigurnosni sustav).
- Uz pomoć Data Structures, možemo izgraditi softver koji može upravljati datotekama i direktorijima (Na primjer, upravitelj datoteka).
- Također možemo razviti softver koji može renderirati grafiku koristeći podatkovne strukture. (Na primjer, web preglednik ili softver za 3D renderiranje).
Osim ovih, kao što je ranije spomenuto, postoje mnoge druge primjene struktura podataka koje nam mogu pomoći u izradi bilo kojeg željenog softvera.