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 set = new Set(); - Set set2 = new Set(); - set.add(1); - set.add(2); - set.add(3); - set.add(4); - set2.add(4); - set.add(9); - set.remove(2); - set.isEmpty(); - - Set I = set.intersection(set2); - System.out.println("Groeße " + set.size()); - set.Ausgabe(); + Set Set = new Set(); + Set Set2 = new Set(); + + Set.add(5);// fügt neue variable der Liste an + Set.add(3);// fügt neue variable der Liste an + Set.add(2);// fügt neue variable der Liste an + Set.add(9);// fügt neue variable der Liste an + Set.add(7);// fügt neue variable der Liste an + + Set2.add(3);// fügt neue variable der Liste zweiten Liste an + Set2.add(7);// fügt neue variable der Liste zweiten Liste an + Set2.add(5);// fügt neue variable der Liste zweiten Liste an + Set2.add(6);// fügt neue variable der Liste zweiten Liste an + Set2.add(1);// fügt neue variable der Liste zweiten Liste an + + System.out.println(Set.contains(4)); //Ausgabe von Set + + + System.out.println(Set.isEmpty()); //Ausgabe von Empty Methode + + Set.remove(0); //removed zahl + + System.out.println(Set.subset(Set2)); //Ausgabe von subset + Set I = Set.intersection(Set2); //Methode intersection wird aufgerufen + I.Ausgabe(); //Ausgabe von intersection + System.out.println("Union"); //ausgabe + Set U = Set.union(Set2); //siehe intersection + U.Ausgabe(); + System.out.println("Difference "); + Set D = Set.difference(Set2); + D.Ausgabe(); + + System.out.println(Set.size()); //ausgabe von größe + + Set.Ausgabe(); //Ausgabe + } } +