Jedna od vrsta struktura podataka koje su direktno utjelovljenje matematičkih entiteta u računarstvu su skupovi. Operacije s njima često su u osnovi različitih algoritama. Različiti programski jezici imaju svoja sredstva za opisivanje skupova.
Potrebno
- - razvojno okruženje;
- - prevodilac sa izabranog programskog jezika.
Instrukcije
Korak 1
Opišite komplet pomoću programskog jezika, ako je dostupan. Na primjer, u jeziku Pascal postoji postavljena konstrukcija koja vam omogućuje deklariranje odgovarajućih tipova. Istina, obujam takvih skupova ne bi smio prelaziti 256 elemenata. Primjer deklaracije tipa skupa mogao bi izgledati ovako:
tip
AZLetters = skup 'A'.. 'Z';
AllLetters = skup znakova;
Varijable i konstante tipova koji su skupovi deklariraju se na uobičajeni način. U ovom slučaju, postavljeni literali se mogu koristiti za inicijalizaciju. Na primjer:
const
LettersSet1: AZLetters = ['A', 'B', 'C'];
Korak 2
Koristite mogućnosti standardnih biblioteka ili modula za opisivanje skupova. Dakle, biblioteka predložaka C ++, koja bi se trebala isporučiti s kompajlerom, uključuje predložak za klasu spremnika skupova koja implementira funkcionalnost skupova:
predložak <
class Key, klasa Svojstva = manje, klasa Allocator = alokator
class set
Kao što možete vidjeti iz popisa, argumenti postavljenog predloška su: tip podataka elemenata skupa, tip funkcionalnog objekta za određivanje redoslijeda elemenata u skupu i tip alokatora memorije. U ovom je slučaju potreban samo prvi argument (kao i druga dva, standardni se binarni predikat manje i standardni alokator koriste po defaultu).
Korak 3
Primijenite klase ili predloške klasa korištene u razvoju okvira koji implementiraju funkcionalnost rada sa skupovima, ako ih ima. Primjer takvog alata je klasa QSet predloška QtCore modula Qt biblioteke. Njegove su mogućnosti slične onima spremnika za set STL opisanih u prethodnom koraku.
Korak 4
Opišite set koristeći vlastita sredstva za implementaciju. Koristite zastavice bitova, pohranjene u nizove fiksne dužine, za skupove elemenata jednostavnih tipova i malih veličina. Implementirati klasu spremnika za složene tipove podataka. Kao osnovu možete uzeti funkcionalnost asocijativnih ili hash asocijativnih nizova. To se, pak, može graditi na bazi samobalansirajućih binarnih stabala pretraživanja (na primjer, crveno-crnih stabala).