From: Doni Pracner Date: Wed, 29 Apr 2015 11:25:23 +0000 (+0200) Subject: Klasa Skup X-Git-Url: http://svarog.pmf.uns.ac.rs/gitweb/?p=spa1-materijali.git;a=commitdiff_plain;h=6dcee52f417cd342c07e5193ab18a172f202684b Klasa Skup --- diff --git a/kodovi/skup/Skup.java b/kodovi/skup/Skup.java new file mode 100644 index 0000000..fbb525c --- /dev/null +++ b/kodovi/skup/Skup.java @@ -0,0 +1,133 @@ +/** + * Tip podataka skup - predstavlja kolekciju razlicitih objekata zadatog tipa. + * + * Pomocni materijal na kursu SPA1, DMI, PMF, UNS www.dmi.rs + * + * v1.0.0 + * + * @param - tip podataka koji ce biti skladisten u instanci ove klase. + */ +public class Skup { + + class Element { + T info; + Element veza; + + public Element() { + this.info = null; + this.veza = null; + } + + public Element(T podatak) { + this.info = podatak; + this.veza = null; + } + + } + + Element zaglavlje; + + public Skup() { + zaglavlje = new Element(); + zaglavlje.veza = zaglavlje; + } + + public String toString() { + String rezultat = "Skup {"; + Element tekuci = zaglavlje.veza; + if (tekuci != zaglavlje) { + rezultat += " " + tekuci.info; + tekuci = tekuci.veza; + } + while (tekuci != zaglavlje) { + rezultat += ", " + tekuci.info; + tekuci = tekuci.veza; + } + return rezultat + " }"; + } + + public boolean pripada(T clan) { + zaglavlje.info = clan; + Element tekuci = zaglavlje.veza; + while (!tekuci.info.equals(clan)) { + tekuci = tekuci.veza; + } + return tekuci != zaglavlje; + } + + public boolean ubaci(T clan) { + if (!pripada(clan)) { + Element novi = new Element(); + novi.info = clan; + novi.veza = zaglavlje.veza; + zaglavlje.veza = novi; + return true; + } else { + return false; + } + } + + public boolean izbaci(T clan) { + zaglavlje.info = clan; + Element prethodni = zaglavlje; + while (!prethodni.veza.info.equals(clan)) { + prethodni = prethodni.veza; + } + if (prethodni.veza != zaglavlje) { + prethodni.veza = prethodni.veza.veza; + return true; + } else { + return false; + } + } + + public void ubaciSve(Skup skup) { + Element tekuci = skup.zaglavlje.veza; + while (tekuci != skup.zaglavlje) { + ubaci(tekuci.info); + tekuci = tekuci.veza; + } + } + + public Skup unija(Skup drugi) { + Skup rezultat = new Skup(); + rezultat.ubaciSve(this); + rezultat.ubaciSve(drugi); + return rezultat; + } + + public Skup presek(Skup drugi) { + Skup rezultat = new Skup(); + Element tekuci = zaglavlje.veza; + while (tekuci != zaglavlje) { + if (drugi.pripada(tekuci.info)) { + rezultat.ubaci(tekuci.info); + } + tekuci = tekuci.veza; + } + return rezultat; + } + + public Skup razlika(Skup drugi) { + Skup rezultat = new Skup(); + Element tekuci = zaglavlje.veza; + while (tekuci != zaglavlje) { + if (!drugi.pripada(tekuci.info)) { + rezultat.ubaci(tekuci.info); + } + tekuci = tekuci.veza; + } + return rezultat; + } + + public boolean podskupOd(Skup drugi) { + Element tekuci = zaglavlje.veza; + while (tekuci != zaglavlje) { + if (!drugi.pripada(tekuci.info)) { + return false; + } + tekuci = tekuci.veza; + } + return true; + } +}