[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/infSloe/Graph/master/Graph.java [Back]  [Original]

import java.util.*;
/**
 * Graph. servus.
 */

public class Graph
{
    //Attribute
    private Knoten[] knotenliste;
    private int maxAnzahl;
    private int anzahl;

    private boolean[][] adjazenzmatrix;

    //Konstruktor
    public Graph(int maxAnzahl)
    {
          this.maxAnzahl = maxAnzahl;
        anzahl = 0;
        knotenliste = new Knoten[maxAnzahl];
        adjazenzmatrix = new boolean[maxAnzahl][maxAnzahl];
    }

    //Methoden
    /**
     *  Falls die maximale Knotenanzahl noch nicht erreicht ist, 
     *  wird ein neuer Knoten mit dem bergebenen Inhalt erzeugt
     *  und in die knotenliste eingefgt. 
     *  anzahl wird dann um ein erhht.
     *  
     *  @param inhalt Eine Zeichenkette, die im Knoten gespeichert werden soll.
     */
    public void  knotenEinfuegen(String inhalt)
    {
        Knoten k = new Knoten(inhalt);
        
        // Hier gibt es etwas zu tun        
    }

    /**
     * Prft ob der bergebene Inhalt in einem Knoten gespeichert ist und gibt dessen Nummer zurck.
     * Falls der Inhalt nicht gespeichert ist, soll -1 zurckgegeben werden.
     * 
     *   @param inhalt  Nach dieser Zeichenkette wird gesucht
     *   @return        Falls die Suche erfolgreich war, wird die Knotennr. zurckgegeben, ansonsten -1
     */
    public int knotennummerGeben(String inhalt)
    {
        // Hier gibt es etwas zu tun
        return 0;
    }         

    /**
     * Gibt eine Liste mit allen Knotennamen als String zurck
     */    
    public String alleKnoten()
    {
        String s = "";
        // Hier gibt es etwas zu tun
        return s;
    }

    /**
     * Fgt eine gerichtete Kante zwischen den Knoten mit den Inhalten bez1 und bez2 ein.
     * Falls es zu einem Bezeichner keinen Knoten geben sollte, wird eine Fehlermeldung
     * auf der Konsole ausgegeben.
     * 
     * @param bez1, bez2  Die Inhalte der beiden Knoten
     */
    public void kanteEinfuegen(String bez1, String bez2)
    {
       // Hier gibt es etwas zu tun
    }

    /**
     * Fgt eine ungerichtete Kante zwischen den Knoten mit den Inhalten bez1 und bez2 ein.
     */
    public void ungerichteteKanteEinfuegen(String bez1, String bez2)
    {
// Hier gibt es etwas zu tun
    }

    /**
     * Entfernt eine Kante zwischen zwei Knoten mit den Inhalten bez1 und bez2
     */
    public void kanteEntfernen(String bez1, String bez2)
    {
        // Hier gibt es etwas zu tun
    }
    
    /**
     * berprft, ob es zwischen den beiden Knoten mit den Bezeichnern bez1 und bez2 eine Kante gibt.
     */
    
    public boolean istKante(String bez1, String bez2)
    {
        // Hier gibt es etwas zu tun
        return true;
    }
  
    /**
     * Liefert die knotenliste zurck (Getter)
     */
    public Knoten[] getKnotenliste()
    {
        return knotenliste;
    }

    /**
     * Liefert die Adjazenzmatrix zurck
     */
    public boolean[][] getAdjazenzmatrix()
    {
        return adjazenzmatrix;
    }
    
    /**
     * Liefert die Knotenanzahl zurck
     */

    public int getKnotenAnzahl()
    {
        return anzahl;
    }

    /**
     *  Liefert den Knoten zu einem gegebenen Bezeichner zurck.
     */
    public Knoten getKnoten(String bez)
    {
        for (Knoten knoten: knotenliste)
        {
            if (knoten.getInhalt().equals(bez))
            {
                return knoten;
            }
        }
        return null;
    }
    
    /**
     * Algorithmus tiefensuche
     */
    public ArrayList tiefenSuche(String a)
    {
        ArrayList reihenfolge = new ArrayList();
        int k1 = knotennummerGeben(a);
        // Alle Knoten als unbesucht markieren
        for (int i = 0; i < anzahl; i++)
        {
            knotenliste[i].setMarke(false);
        }
        
        
        //Aufruf der rekursiven Suchmethode
        tiefensucheKnoten(k1,reihenfolge);
        return reihenfolge;
        
    }
    
    
    public void tiefensucheKnoten(int start, ArrayList reihenfolge)
    {
        //System.out.println("Knoten " + knotenliste[start].getInhalt());
        reihenfolge.add("+ " + knotenliste[start].getInhalt());
        knotenliste[start].setMarke(true);
        
        for (int i = 0; i < anzahl; i++)
        {
            if (adjazenzmatrix[start][i] && !knotenliste[i].getMarke())
            {
                tiefensucheKnoten(i,reihenfolge);
            }
        }
        reihenfolge.add("-" + knotenliste[start].getInhalt());
    }


}

Web Proxy Viewer  |  New URL  |  Original Page