From d19d82d0daba6d11ec0cd58ef13d96a1b5241f65 Mon Sep 17 00:00:00 2001 From: SimonDHG <@> Date: Wed, 31 Jan 2024 10:59:49 +0100 Subject: [PATCH] der blaue ist krasse als der gelbe --- Edge.java | 20 ++++++++++++++++++++ Graph.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ Node.java | 29 +++++++++++++++++++++++++++++ test.java | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 145 insertions(+) create mode 100644 Edge.java create mode 100644 Graph.java create mode 100644 Node.java create mode 100644 test.java diff --git a/Edge.java b/Edge.java new file mode 100644 index 0000000..e877a3b --- /dev/null +++ b/Edge.java @@ -0,0 +1,20 @@ +public class Edge +{ + private Node anfang; + private Node ende; + private int wert; + private boolean gerichtet; + + public Edge(Node a, Node e, int w, boolean r){ + this.anfang = a; + this.ende = e; + this.wert = w ; + this.gerichtet = r; + } + + public Node getAnfang(){return this.anfang;} + public Node getEnde(){return this.ende;} + public int getWert(){return this.wert;} + public boolean istGerichtet(){return this.gerichtet;} + +} diff --git a/Graph.java b/Graph.java new file mode 100644 index 0000000..6450187 --- /dev/null +++ b/Graph.java @@ -0,0 +1,50 @@ +import java.util.ArrayList; +public class Graph +{ + private ArrayList nodes; + private ArrayList edges; + + public Graph(){ + this.nodes = new ArrayList (); + this.edges = new ArrayList(); + } + + public void addNode(Node n) { + this.nodes.add(n); + } + + public void addNode(int nr){ + this.nodes.add(new Node(nr)); + } + + public void addEdge(Edge e){ + this.edges.add(e); + e.getAnfang().addEdge(e); + e.getEnde().addEdge(e); + } + public void addEdge(int a, int e, int w, boolean g){ + Node an = null; + Node en = null; + for (int i = 0; i < this.nodes.size(); i++){ + if (this.nodes.get(i).getNumber() == a){ + an = this.nodes.get(i); + } + if (this.nodes.get(i).getNumber()== e){ + en = this.nodes.get(i); + } + } + if (an == null || en == null){ + return; + } + this.addEdge(new Edge(an, en, w, g)); + } + + public Node getNode(int nr){ + for (Node n : this.nodes){ + if (n.getNumber() == nr){ + return n; + } + } + return null; + } +} diff --git a/Node.java b/Node.java new file mode 100644 index 0000000..daec6c1 --- /dev/null +++ b/Node.java @@ -0,0 +1,29 @@ +import java.util.ArrayList; +public class Node +{ + private int number; + private ArrayList edges; + public Node(int n){ + this.number = n; + this.edges = new ArrayList(); + } + + public int getNumber (){return this.number;} + + public void addEdge(Edge e){ + this.edges.add(e); + } + + public ArrayList getTargets(){ + ArrayList t= new ArrayList(); + for (Edge e : this.edges){ + if(e.getAnfang()== this){ + t.add(e.getEnde()); + } + else if (!e.istGerichtet()){ + t.add(e.getAnfang()); + } + } + return t; + } +} diff --git a/test.java b/test.java new file mode 100644 index 0000000..5c450bc --- /dev/null +++ b/test.java @@ -0,0 +1,46 @@ +import java.util.ArrayList; +public class test +{ + public static void test(){ + + Graph g = new Graph(); + + for (int i = 1; i <= 22; i++){ + g.addNode(i); + } + + g.addEdge(1,4,1,false); + g.addEdge(1,2,1,false); + g.addEdge(1,5,1,false); + g.addEdge(2,3,1,false); + g.addEdge(2,6,1,false); + g.addEdge(2,9,1,false); + g.addEdge(3,7,1,false); + g.addEdge(4,8,1,false); + g.addEdge(5,8,1,false); + g.addEdge(5,12,1,false); + g.addEdge(5,11,1,false); + g.addEdge(5,10,1,false); + g.addEdge(6,13,1,false); + g.addEdge(7,18,1,false); + g.addEdge(7,14,1,false); + g.addEdge(7,17,1,false); + g.addEdge(9,10,1,false); + g.addEdge(11,15,1,false); + g.addEdge(11,16,1,false); + g.addEdge(13,19,1,false); + g.addEdge(13,16,1,false); + g.addEdge(14,17,1,false); + g.addEdge(15,16,1,false); + g.addEdge(15,22,1,false); + g.addEdge(16,20,1,false); + g.addEdge(21,22,1,false); + + Node n = g.getNode(16); + ArrayList targets = n.getTargets(); + for (Node target : targets){ + System.out.println(target.getNumber()); + } + +} +}