gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control system
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: d941347)
raw | patch | inline | side by side (parent: d941347)
author | Doni Pracner <quinnuendo@gmail.com> | |
Wed, 29 Apr 2015 11:25:23 +0000 (13:25 +0200) | ||
committer | Doni Pracner <quinnuendo@gmail.com> | |
Wed, 29 Apr 2015 11:25:23 +0000 (13:25 +0200) |
kodovi/skup/Skup.java | [new file with mode: 0644] | patch | blob |
diff --git a/kodovi/skup/Skup.java b/kodovi/skup/Skup.java
--- /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 <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;
+ }
+}