gitweb on Svarog

projekti pod git sistemom za održavanje verzija -- projects under the git version control system
Klasa Skup
authorDoni Pracner <quinnuendo@gmail.com>
Wed, 29 Apr 2015 11:25:23 +0000 (13:25 +0200)
committerDoni Pracner <quinnuendo@gmail.com>
Wed, 29 Apr 2015 11:25:23 +0000 (13:25 +0200)
kodovi/skup/Skup.java [new file with mode: 0644]

diff --git a/kodovi/skup/Skup.java b/kodovi/skup/Skup.java
new file mode 100644 (file)
index 0000000..fbb525c
--- /dev/null
@@ -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 <T> - tip podataka koji ce biti skladisten u instanci ove klase.
+ */
+public class Skup<T> {
+
+       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<T> skup) {
+               Element tekuci = skup.zaglavlje.veza;
+               while (tekuci != skup.zaglavlje) {
+                       ubaci(tekuci.info);
+                       tekuci = tekuci.veza;
+               }
+       }
+
+       public Skup<T> unija(Skup<T> drugi) {
+               Skup<T> rezultat = new Skup<T>();
+               rezultat.ubaciSve(this);
+               rezultat.ubaciSve(drugi);
+               return rezultat;
+       }
+
+       public Skup<T> presek(Skup<T> drugi) {
+               Skup<T> rezultat = new Skup<T>();
+               Element tekuci = zaglavlje.veza;
+               while (tekuci != zaglavlje) {
+                       if (drugi.pripada(tekuci.info)) {
+                               rezultat.ubaci(tekuci.info);
+                       }
+                       tekuci = tekuci.veza;
+               }
+               return rezultat;
+       }
+       
+       public Skup<T> razlika(Skup<T> drugi) {
+               Skup<T> rezultat = new Skup<T>();
+               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<T> drugi) {
+               Element tekuci = zaglavlje.veza;
+               while (tekuci != zaglavlje) {
+                       if (!drugi.pripada(tekuci.info)) {
+                               return false;
+                       }
+                       tekuci = tekuci.veza;
+               }
+               return true;
+       }
+}
Svarog.pmf.uns.ac.rs/gitweb maintanance Doni Pracner