Hallo,
ich muss in Java eine Methode summe() schreiben, die die Werte aller Elemente einer Liste addiert.
Ich könnte ja schreiben summe = list.head.obj + list.head.next.obj + list.head.next.next.obj ....
Aber wie mache ich sowas dann allgemein und für eine variable Anzahl an Elementen?
Mit freundlichen Grüßen
11011100
Hier noch der Code:
ich muss in Java eine Methode summe() schreiben, die die Werte aller Elemente einer Liste addiert.
Ich könnte ja schreiben summe = list.head.obj + list.head.next.obj + list.head.next.next.obj ....
Aber wie mache ich sowas dann allgemein und für eine variable Anzahl an Elementen?
Mit freundlichen Grüßen
11011100
Hier noch der Code:
Java:
package uebung8;
/**
* Die Klasse VerketteteListe berechnet die Summe aller hinzugefuegten Knoten
* in der verketteten Liste.
*
* Bitte aendern Sie an dieser Stelle nichts. Sollte der Name anders sein als
* definiert, tritt waehrend des Tests ein Fehler auf und Ihre Loesung wird als
* falsch bewertet!
*/
public class VerketteteListe {
////////////////////////////////////////////////////////////////////////////
// Start der Klasse Node
////////////////////////////////////////////////////////////////////////////
/**
* Dies ist die Definition der Klasse Node
*
* Ein Object dieser Klasse repraesentiert einen Knoten in einer einfach
* verketteten Liste.
*
* Beachten Sie die Klammern: Die Klasse Node ist innerhalb der Klasse List
* definiert!
*/
private static class Node {
int obj; // der "Wert" des Knotens
Node next; // der Nachfolger in der Liste
/**
* Erstellt einen neuen Knoten ohne Wert und ohne Nachfolger
*/
public Node() {
obj = 0;
next = null;
}
/**
* Erstellt einen neuen Knoten mit einem Wert.
* @param o Der Wert des neuen Knotens.
*/
public Node(int o) {
obj = o;
next = null;
}
//Setter und Getter-Methoden
public void setElement(int o) {
obj = o;
}
public int getElement() {
return obj;
}
public void setNext(Node n) {
next = n;
}
public Node getNext() {
return next;
}
}
////////////////////////////////////////////////////////////////////////////
// Ende der Klasse Node
////////////////////////////////////////////////////////////////////////////
/**
* Markiert den Kopf der Liste
*/
private Node head;
/**
* Konstruktor zum Erzeugen einer neuen verketteten Liste.
*/
public VerketteteListe() {
this.head = null;
}
/**
* Fuegt ein neues Element am Ende der vorhandenen Liste ein.
* @param wert Der einzufuegende Wert.
*/
public void hinzufuegen(int wert) {
if(this.head == null) {
//Fuege das erste Element ein
this.head = new Node(wert);
} else {
//Fuege die restlichen Elemente am Ende ein
Node prev;
Node tmp;
Node newNode;
prev = tmp = this.head;
do {
//Sichere das aktuelle Element
prev = tmp;
//Erhalte das naechste Element
tmp = tmp.getNext();
//Testet ob das naechste Element belegt ist
} while(tmp != null);
//Erzeuge einen neuen Knoten
newNode = new Node(wert);
//Fuege den neu erzeugten Knoten am Ende ein
prev.setNext(newNode);
}
}
public static int summe(VerketteteListe list) {
int s = list.head.obj + list.head.next.obj + list.head.next.next.obj;
return s;
}
public static void main(String[] args) {
//Erzeugt ein neues Objekt der Klasse
VerketteteListe list = new VerketteteListe();
//Fuegt neue Knoten hinzu
list.hinzufuegen(10);
list.hinzufuegen(20);
list.hinzufuegen(3);
list.hinzufuegen(7);
list.hinzufuegen(5);
list.hinzufuegen(2);
System.out.println(summe(list));
}
}