diff --git a/Datentypen/src/Set.java b/Datentypen/src/Set.java index ef23345..df700a3 100644 --- a/Datentypen/src/Set.java +++ b/Datentypen/src/Set.java @@ -1,98 +1,160 @@ public class Set
{ -private Node
start; -private int size; - - + private Node
start; + private int size; + public Set() { - this.start = null; - this.size = 0; -} - public boolean isEmpty() { // Klasse fragt ab ob die liste leer ist - if (size == 0) { // wenn l‰nge der liste 0 ist - - return true; // gibt true zur¸ck weil es boolean ist - } else { // wenn oberes nicht erfÔøΩllt wird - - return false; // gibt false zur¸ck wegen boolean + this.start = null; + this.size = 0; } -} - public void add(P wert) { // Methode f‰ngt hinten an die Liste etwas an - this.size++; // grˆfle wird hochgez‰hlt da liste um ein grˆfler werden muss - if(contains(wert) == false) { - if (this.start == null) { // wenn start wert = 0 ist - this.start = new Node
(wert); // start wird zu neuem Knoten mit wert wert - } else { // wenn obere if bedingung nicht erf¸llt wird dann soll er volgendes ausgef¸hrt - Node
current = this.start; // current bekommt den wert der start zugewissen wurde - while (current.next != null) { // w‰hrend nachfolger des jetzigen Knotens ungleich null ist - current = current.next; // wird current dem n‰chsten werd zugewissen - } - current.next = new Node
(wert); // dem jetzigen Knoten wird als 2ter eintrag ein neuer Knoten zugewissen + public boolean isEmpty() { // Klasse fragt ab ob die liste leer ist + if (size == 0) { // wenn l‰nge der liste 0 ist + + return true; // gibt true zur¸ck weil es boolean ist + } else { // wenn oberes nicht erfÔøΩllt wird + + return false; // gibt false zur¸ck wegen boolean } - } else {return;} } - public boolean contains(P wert) { //gibt aus ob ein wert in der Liste ist - Node
current = this.start; // Knoten current wird der wert start zugewissen - while (current != null) { // solange current ungleich null ist wird das in der Schleife ausgefÔøΩhrt + public void add(P wert) { // Methode f‰ngt hinten an die Liste etwas an + this.size++; // grˆfle wird hochgez‰hlt da liste um ein grˆfler werden muss + if (contains(wert) == false) { + if (this.start == null) { // wenn start wert = 0 ist + this.start = new Node
(wert); // start wird zu neuem Knoten mit wert wert + } else { // wenn obere if bedingung nicht erf¸llt wird dann soll er volgendes + // ausgef¸hrt + Node
current = this.start; // current bekommt den wert der start zugewissen wurde + while (current.next != null) { // w‰hrend nachfolger des jetzigen Knotens ungleich null ist + current = current.next; // wird current dem n‰chsten werd zugewissen - if (current.wert == wert) { // wenn der der Knoten current = der wert ist - - return true; // dann gibt es den eintrag also muss er true zurÔøΩckgeben + } + current.next = new Node
(wert); // dem jetzigen Knoten wird als 2ter eintrag ein neuer Knoten + // zugewissen } - current = current.next; // n‰chster wert wird zum aktuellen + } else { + return; + } + } + + public boolean contains(P wert) { // gibt aus ob ein wert in der Liste ist + Node
current = this.start; // Knoten current wird der wert start zugewissen + while (current != null) { // solange current ungleich null ist wird das in der Schleife ausgefÔøΩhrt + + if (current.wert == wert) { // wenn der der Knoten current = der wert ist + + return true; // dann gibt es den eintrag also muss er true zurÔøΩckgeben + } + current = current.next; // n‰chster wert wird zum aktuellen } - - return false; // sonst ist er nicht drin - } - public void remove(P wert) { - Node
current = this.start; // neuer Knoten current wird erstellt - if(current.wert == wert) { - this.start = current.next; - } - while(current.next != null) { - if(current.next.wert == wert) { - current.next = current.next.next; - size--; - } - current = current.next; - } - } - public void Ausgabe() { - Node
current = this.start; - while(current != null) { - System.out.print(current.wert + " "); - current = current.next; - } System.out.print("\n"); - } - public int size() { // getter Mehode f¸r grˆfle + return false; // sonst ist er nicht drin + } + + public void remove(P wert) { + Node
current = this.start; // neuer Knoten current wird erstellt + if (current.wert == wert) { //wenn der wert in current gleich der wert ist + this.start = current.next; //wenn der wert von start wird auf den wert im nächsten Node ist + } + while (current.next != null) { //solange der nächste wert in Node ungleich null ist + if (current.next.wert == wert) { //wenn der wert vom nächsten Node gleich der wert ist + current.next = current.next.next; //der nächste wert von Node wir auf den übernächsten gesetzt + size--; //größe der Node wird eins runter gezählt um den eintrag zu löschen + } + current = current.next; //Node wird wieder eins hochgezählt + } + } + + public void Ausgabe() { //Ausgabe Methode + Node
current = this.start; //Neuer Node wird erstellt + + while (current != null) { //solange der Node current ungleich null ist + System.out.print(current.wert + " "); //ausgabe + current = current.next; //current wird auf den nächsten Node gesetzt + } + System.out.print("\n"); //ausgabe + } + + public int size() { // getter Mehode f¸r grˆfle return this.size; } - public Node
getStart() { // getter Mehode f¸r Start + + public Node
getStart() { // getter Mehode f¸r Start return this.start; } - public Set
intersection(Set
s) { - Set
result = new Set
(); - Node
current = this.start; - while(current != null) { - if(s.contains(current.wert)) result.add(current.wert); - current = current.next; - } - return result; - } - public Set
union(Set
s) { - Set
result = new Set
(); - Node
current = this.start; - while(current != null) { - current = current.next; - - } - return result; - } -} - + public Set
intersection(Set
s) { //Intersection Methode + Set
result = new Set
(); //neuees set "result" wird ertsellt + Node
current = this.start; //neuer Node current wird erstellet + while (current != null) { //solange current ungleich null ist + if (s.contains(current.wert)) // wenn sn den wert von current hat + result.add(current.wert); //soll am result der wert hinzugefügt werden + current = current.next; //current wird wieder hochgezählt + } + return result; //result wird returned + } + + public Set
union(Set
s) { //Methode schreibt beide werte aus beiden Listen zusammen + Node
current = this.start; //erstellt erste Liste + Node
current2 = s.start; //erstellt zweite Liste + Set
result = new Set
(); //erstellt dritte Liste + + result.add(current.wert); //fügt wert hinzu + + for (int i = 0; i < this.size(); i++) { //erste liste wird durchgegangen + for (int j = 0; j < s.size(); j++) { //zweite Liste wird durchgegangen + if (result.contains(current.wert) == false) { // wenn result bereits den wert enthält wird er nicht + // hinzugefügt + result.add(current.wert); //füht wert ein + } + if (result.contains(current2.wert) == false) { // wenn result bereits den wert enthält wird er nicht + // hinzugefügt + result.add(current2.wert); //fügt wert ein + } + current2 = current2.next; //zählt auf die nächste variable hoch in der zweiten liste + + } + current = current.next; // zählt auf die nächste variable in der ersten liste hoch + current2 = s.start; // current der zweiten liste wird zum start der zweiten eingegebenen liste + } + return result; // gibt result zurück worin die listen gerspeichert sind + } + + public Set
difference(Set
s) { //Methode wird erstellt und difference benannt + Node
current = this.start; // neue Node "current " erstellt und die werte von start eingefügt + Set
result = new Set
(); //neuer Set " result " wird erstellt + + for (int i = 0; i < this.size(); i++) { //for schleife geht die erste variable durch + for (int j = 0; j < s.size(); j++) { //for schleife geht zweite variable durch + + if (s.contains(current.wert) == false) { //wenn s denn jetztigen wert nicht hat + result.add(current.wert); //soll an result der jetzige wert hinzugefügt werden + } + } + current = current.next; //zählt weiter + + } + return result; //gibt result zutück + } + public boolean subset(Set
s) { //neue Methode "subeset" + Node
current2 = s.start; //neue Node "current2" wird auf start wert von s gesetzt
+
+ while(current2 != null) { //solange current 2 ungleich null ist
+ if(this.contains(current2.wert) == true) { // wenn this denn jetzigen wert hat
+ current2 = current2.next; //current wird eins weiter gesetzt
+ } else { //sonst
+ return false; // soll falls zurückgegeben werden
+ }
+ }
+ return true; //wenn obere while schleife nicht erfüllt weird soll es true zurückgeben
+
+ }
+
+
+ }
+
+
+
diff --git a/Datentypen/src/SetTest.java b/Datentypen/src/SetTest.java
index 07267a4..ac8ea37 100644
--- a/Datentypen/src/SetTest.java
+++ b/Datentypen/src/SetTest.java
@@ -1,21 +1,43 @@
public class SetTest {
-
public static void main(String[] args) {
- Set