Jedna od vrsta podatkovnih struktura koje su izravno utjelovljenje matematičkih cjelina u računalnoj znanosti su skupovi. Operacije s njima često su u osnovi različitih algoritama. Različiti programski jezici imaju vlastita sredstva za opisivanje skupova.
Potrebno
- - razvojno okruženje;
- - prevoditelj s odabranog programskog jezika.
Upute
Korak 1
Opišite skup pomoću programskog jezika, ako je dostupan. Na primjer, u jeziku Pascal postoji postavljena konstrukcija koja vam omogućuje deklariranje odgovarajućih vrsta. Istina, obujam takvih skupova ne smije 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 se slučaju za inicijalizaciju mogu koristiti postavljeni literali. Na primjer:
konst
LettersSet1: AZLetters = ['A', 'B', 'C'];
Korak 2
Upotrijebite mogućnosti standardnih knjižnica 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 koji implementira funkcionalnost skupova:
predložak <
ključ klase, osobine razreda = manje, razred Allocator = alokator
razredni set
Kao što možete vidjeti iz popisa, argumenti postavljenog predloška su: vrsta podataka elemenata skupa, vrsta funkcionalnog objekta za određivanje redoslijeda elemenata u skupu i vrsta alokatora memorije. U ovom je slučaju potreban samo prvi argument (kao i druga dva, standardni se binarni predikat manje i standardni alokator koriste prema zadanim postavkama).
3. korak
Primijenite klase ili predloške klasa koje se koriste u razvoju okvira koji implementiraju funkcionalnost rada sa skupovima, ako postoje. 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.
4. korak
Opišite skup koristeći vlastita sredstva za implementaciju. Koristite zastavice bitova, pohranjene u nizove fiksne duljine, za skupove elemenata jednostavnih vrsta i malih veličina. Provedite klasu spremnika za složene vrste podataka. Kao osnovu možete uzeti funkcionalnost asocijativnih ili hashirajućih asocijativnih nizova. To se, pak, može graditi na temelju samobalansirajućih binarnih stabala pretraživanja (na primjer, crveno-crnih stabala).