Rekursion

verplaid

Neues Mitglied
Hallo hätte folgende Frage, habe eine Warteschlange mit einer Rekursion programmiert und würde jetzt gerne eine Test Klasse erstellen, die zu der Warteschlange Personen(mit name und Gewicht) hinzufügt und mir dann in der Konsole Name und Gewicht der jeweiligen Personen ausgibt.
Verstehe aber nicht ganz wie ich da ran gehen soll. Hoffe ihr könnt mir helfen


Code:
public class Warteschlange {
    private Knoten erster;

    public Warteschlange() {
        erster=null;  
    }

    public void hinzufügen(String name,int gewicht) {
        if(erster==null) {
            erster= new Knoten(name,gewicht);
        }
        else{
            erster.einfügen(name,gewicht);

Code:
public class Datenelement {
    private int gewicht;
    private String name;
    public Datenelement(String n,int g) {
        gewicht=g;
        name=n;
    }

    public int GewichtGeben() {
        return gewicht;  
    }
}

Code:
public class Knoten {
    private Knoten nächster;
    private Datenelement inhalt;

    public Knoten(String name,int Gewicht )
    {
        nächster=null;
        inhalt=new Datenelement(name,Gewicht);

    }

    public void einfügen(String name,int Gewicht) {
        if(nächster==null) {
            nächster = new Knoten(name,Gewicht);
        }else{
            nächster.einfügen(name,Gewicht);
        }
    }
}
 

Flown

Administrator
Mitarbeiter
Du brauchst auf jedenfall mal eine Klasse mit einer main-Methode. Ein wenig überarbeitet:
Java:
class Knoten {
  private Knoten nächster;
  private Datenelement inhalt;
  
  public Knoten(String name, int gewicht) {
    inhalt = new Datenelement(name, gewicht);
    
  }
  
  public void einfügen(String name, int Gewicht) {
    if (nächster == null) {
      nächster = new Knoten(name, Gewicht);
    } else {
      nächster.einfügen(name, Gewicht);
    }
  }
  
  public Knoten nächster() {
    return nächster;
  }
  
  public Datenelement inhalt() {
    return inhalt;
  }
}

class Datenelement {
  private int gewicht;
  private String name;
  
  public Datenelement(String name, int gewicht) {
    this.name = name;
    this.gewicht = gewicht;
  }
  
  @Override
  public String toString() {
    return String.format("%s (%d kg)",name, gewicht);
  }
}

class Warteschlange {
  private Knoten erster;
  
  public void hinzufügen(String name, int gewicht) {
    if (erster == null) {
      erster = new Knoten(name, gewicht);
    } else {
      erster.einfügen(name, gewicht);
    }
  }
  
  @Override
  public String toString() {
    StringJoiner builder = new StringJoiner(", ", "[", "]");
    for(Knoten knoten = erster; knoten != null; knoten = knoten.nächster()) {
      builder.add(knoten.inhalt().toString());
    }
    return builder.toString();
  }
}
public class Test {
  public static void main(String[] args) {
    Warteschlange queue = new Warteschlange();
    queue.hinzufügen("Henry", 80);
    queue.hinzufügen("Susy", 50);
    queue.hinzufügen("Joe", 25);
  
    System.out.println(queue);
  }
}
 

httpdigest

Top Contributor
Für Iterationen über listenartige Datenstrukturen, wie z.B. deine einfach verkettete Liste, eignet sich sehr gut das java.util.Iterable Interface. Es wird zum Beispiel auch von der "Enhanced For-Loop" in Java unterstützt. Du könntest also deine Warteschlange das typparametrisierte Interface Iterable (of Datenelement) implementieren lassen und dann deiner Warteschlange auf Anfrage einen Iterator (of Datenelement) zurückliefern lassen:
Java:
import java.util.Iterator;
class Knoten {
  private Knoten nächster;
  private Datenelement inhalt;
  public Knoten(String name, int gewicht) {
    inhalt = new Datenelement(name, gewicht);
  }
  public void einfügen(String name, int Gewicht) {
    if (nächster == null) {
      nächster = new Knoten(name, Gewicht);
    } else {
      nächster.einfügen(name, Gewicht);
    }
  }
  public Knoten nächster() {
    return nächster;
  }
  public Datenelement inhalt() {
    return inhalt;
  }
}
class Datenelement {
  private int gewicht;
  private String name;
  public Datenelement(String name, int gewicht) {
    this.name = name;
    this.gewicht = gewicht;
  }
  public int getGewicht() {
    return gewicht;
  }
  public String getName() {
    return name;
  }
}
class Warteschlange implements Iterable<Datenelement> {
  private Knoten erster;
  public void hinzufügen(String name, int gewicht) {
    if (erster == null) {
      erster = new Knoten(name, gewicht);
    } else {
      erster.einfügen(name, gewicht);
    }
  }
  @Override
  public Iterator<Datenelement> iterator() {
    return new Iterator<Datenelement>() {
      Knoten nächster = erster;
      public boolean hasNext() {
        return nächster != null;
      }
      public Datenelement next() {
        Knoten ergebnis = nächster;
        nächster = nächster.nächster();
        return ergebnis.inhalt();
      }
    };
  }
}
public class Test {
  public static void main(String[] args) {
    Warteschlange queue = new Warteschlange();
    queue.hinzufügen("Henry", 80);
    queue.hinzufügen("Susy", 50);
    queue.hinzufügen("Joe", 25);
    for (Datenelement e : queue) {
      System.out.println("Name: " + e.getName() + ", Gewicht: " + e.getGewicht());
    }
  }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Rekursion Aufrufbaum Allgemeine Java-Themen 7
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
districon Rekursion und Dynamische Programmierung Allgemeine Java-Themen 2
Zeppi Rekursion StackOverflowError Allgemeine Java-Themen 4
J Rekursion Allgemeine Java-Themen 4
Zrebna Wie kann man endgültig aus einer Rekursion ausbrechen? Allgemeine Java-Themen 14
parrot Rekursion Aufgabe Allgemeine Java-Themen 12
B Rekursion Allgemeine Java-Themen 11
X Wie mache ich hier eine Rekursion rein ? Allgemeine Java-Themen 7
J Rekursion Mergesort Allgemeine Java-Themen 10
R Rekursion Allgemeine Java-Themen 3
R Programm zur Rekursion Allgemeine Java-Themen 5
J Denkfehler Rekursion Allgemeine Java-Themen 5
I Raute mit Rekursion "zeichnen" Allgemeine Java-Themen 7
B Rekursion Allgemeine Java-Themen 2
B Rekursion Allgemeine Java-Themen 22
B Java Sternchen ausgeben mittels Rekursion Allgemeine Java-Themen 3
Hacer Rekursion- sumOfAllNodes Allgemeine Java-Themen 5
L Rekursion Binärbaum Allgemeine Java-Themen 7
Androbin Interpreter-Fehler Probleme mit Rekursion - StackOverflowError Allgemeine Java-Themen 8
Y Rekursion Allgemeine Java-Themen 19
M Permutation ohne Wiederholung mit rekursion Allgemeine Java-Themen 4
J Rekursion oder Iteration - verkettete Listen Allgemeine Java-Themen 8
T Pascalsches Dreieck ohne array und rekursion Allgemeine Java-Themen 9
P Rekursion Allgemeine Java-Themen 9
R Threading und Rekursion führen zu “GC overhead limit exceeded” Allgemeine Java-Themen 4
W Rekursion-Probleme mit return Allgemeine Java-Themen 35
C Rekursion Fibonacci Allgemeine Java-Themen 31
T Rekursion mit While Schleife kombinieren? Allgemeine Java-Themen 4
eQuest Rekursion Dauer Allgemeine Java-Themen 6
Weiti Swingworker und Rekursion Allgemeine Java-Themen 8
L fragwürdige Rekursion Allgemeine Java-Themen 4
L Kleine Rekursion Allgemeine Java-Themen 12
M Rekursion!! Allgemeine Java-Themen 8
J Rekursion in Schleifenkonstrukt wandeln Allgemeine Java-Themen 21
R Rekursion Ablauflogik Allgemeine Java-Themen 19
M Rückwärts geführte Rekursion Allgemeine Java-Themen 3
Schandro StackOverflowError bei Rekursion verhindern Allgemeine Java-Themen 14
G Werte bei Rekursion viel höher als erwartet Allgemeine Java-Themen 3
G Rekursion - Denksport Allgemeine Java-Themen 6
S Rekursion und StackOverflow Allgemeine Java-Themen 11
P Stackoverflow in Rekursion. Bin ich schuld oder Java? Allgemeine Java-Themen 9
W kompliziertes Konstrukt von Schleifen/If/else. Rekursion? Allgemeine Java-Themen 22
S Rekursion Allgemeine Java-Themen 2
Linad Tiefe der Rekursion als Abbruchbedingung Allgemeine Java-Themen 6
Linad Zahlensysteme -> Rekursion Allgemeine Java-Themen 4
N Frage zu einer Rekursion Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben