Hallo,
Ich soll eine Einfach Verkettete Liste programmieren mit dem mir vorgegebenem Grundgerüst(s.u.).
Problem Ich bekomme zwar keine Syntax Fehler aber dafür Null Pointer Exception und ich glaube ich habs auch falsch implementiert.
Aufgabenstellung:
1. Erstellen Sie eine Klasse EinfachVerketteteListe und realisieren Sie
damit die Schnittstelle IEinfachVerketteteListe.
2. Erstellen Sie eine Konkretisierung der abstrakten Klasse AEvkListenelement.
3. Schreiben Sie hierfür eine Testklasse EvkTest mit einer Main-Methode.
Instanziieren Sie in der Main-Methode zun ̈chst ein Objekt der Klasse
EinfachVerketteteListe.
4. Fügen Sie anschließend mittels zumAnfangHinzu(Object) die folgenden Ganzzahlen hinzu: 4, 7, 9, 12, 42, 4.
Fügen Sie im Anschluss mittels zumEndeHinzu(Object) die Ganzzahlen 1337, 0, 8, 15 hinzu.
5. Löschen Sie mit Hilfe von entferne(Object) die Zahlen 4, 7, 9 und12.
Geben Sie die verbleibenden Zahlenwerte der Reihe nach auf der Kom-
mandozeile aus. Beginnen Sie die Ausgabe mit dem head -Element.
Hinweis: Vergleichen Sie die Objekt-Variablen nicht mit dem doppelten Gleich-
heitszeichen (==), sondern nutzen Sie die Methode equals(Object).
Die vorgegebenen Klassen mit Anweisung:
Meine Implementierung:
Für eure Hilfe wäre ich sehr dankbar!
Ich soll eine Einfach Verkettete Liste programmieren mit dem mir vorgegebenem Grundgerüst(s.u.).
Problem Ich bekomme zwar keine Syntax Fehler aber dafür Null Pointer Exception und ich glaube ich habs auch falsch implementiert.
Aufgabenstellung:
1. Erstellen Sie eine Klasse EinfachVerketteteListe und realisieren Sie
damit die Schnittstelle IEinfachVerketteteListe.
2. Erstellen Sie eine Konkretisierung der abstrakten Klasse AEvkListenelement.
3. Schreiben Sie hierfür eine Testklasse EvkTest mit einer Main-Methode.
Instanziieren Sie in der Main-Methode zun ̈chst ein Objekt der Klasse
EinfachVerketteteListe.
4. Fügen Sie anschließend mittels zumAnfangHinzu(Object) die folgenden Ganzzahlen hinzu: 4, 7, 9, 12, 42, 4.
Fügen Sie im Anschluss mittels zumEndeHinzu(Object) die Ganzzahlen 1337, 0, 8, 15 hinzu.
5. Löschen Sie mit Hilfe von entferne(Object) die Zahlen 4, 7, 9 und12.
Geben Sie die verbleibenden Zahlenwerte der Reihe nach auf der Kom-
mandozeile aus. Beginnen Sie die Ausgabe mit dem head -Element.
Hinweis: Vergleichen Sie die Objekt-Variablen nicht mit dem doppelten Gleich-
heitszeichen (==), sondern nutzen Sie die Methode equals(Object).
Die vorgegebenen Klassen mit Anweisung:
Java:
public interface IEinfachVerketteteListen
{
/**
* Prüft, ob Nutzerdaten in der verketteten Liste vorhanden sind.
*
* @return true, wenn ja, sonst false.
*/
public boolean istLeer();
/**
* @return Liefert die Nutzerdaten aus dem head-Element der verketteten Liste.
*/
public Object head();
/**
* @return Liefert neue einfach verkettete Liste mit head-Referenz auf
* zweitem Listenelement.
*/
public IEinfachVerketteteListen tail();
/**
* @return Gibt die Anzahl der Elemente aus der verketteten Liste zurück.
*/
public int gibLaenge();
/**
* Fügt Nutzdaten an den Anfang der Liste ein.
*
* @param nutzdaten
*/
public void zumAnfangHinzu(Object nutzdaten);
/**
* Fügt Nutzdaten an das Ende der Liste ein.
*
* @param nutzdaten
*/
public void zumEndeHinzu(Object nutzdaten);
/**
* Entfernt die angegebenen Nutzdaten aus der verketteten Liste.
*
* @param nutzdaten
*/
public void entferne(Object nutzdaten);
}
Java:
public abstract class AEvkListenelement
{
Object nutzdaten = null;
AEvkListenelement naechstesElement = null;
/**
* Setzt die Nutzdaten eines Listenelements.
*
* @param element
*/
public abstract void setzNutzdaten(Object element);
/**
* Setzt den Nachfolger eines Listenelements.
*
* @param nachfolger
*/
public abstract void setzNaechstesElement(AEvkListenelement nachfolger);
/**
* @return Gibt die Nutzdaten eines Listenelements zurück.
*/
public abstract Object gibNutzdaten();
/**
* @return Gibt den Nachfolger eines Listenelements zurück.
*/
public abstract AEvkListenelement gibNaechstesElement();
}
Meine Implementierung:
Java:
public class EinfachVerketteteListen implements IEinfachVerketteteListen{
private AEvkListenelement head = null;
public boolean istLeer(){
if(head != null){
return false;
}
return true;
}
public Object head(){
//für unsere Implementierung sowieso immer Null
return head.gibNutzdaten();
}
public IEinfachVerketteteListen tail(){
AEvkListenelement naechstesElement = null;
//in unserer Implementierung fungiert head nur als "Dummy"
//also beginnt die Liste sowieso erst bei zweiten Element,
//das erste überhaupt mit Inhalt
//Übergabeparameter wäre
EinfachVerketteteListen list = new EinfachVerketteteListen();
naechstesElement = list.head.gibNaechstesElement();
return this;
}
public int gibLaenge(){
int Laenge = 0;
AEvkListenelement TempElement = head;
while(TempElement.naechstesElement != null){
Laenge++;
TempElement = TempElement.naechstesElement;
}
return Laenge;
}
public void zumAnfangHinzu(Object nutzdaten){
EvkListenelement NewElement = new EvkListenelement();
NewElement.setzNutzdaten(nutzdaten);
NewElement = (EvkListenelement) head.gibNaechstesElement();
head.setzNaechstesElement(NewElement);
}
public void zumEndeHinzu(Object nutzdaten){
AEvkListenelement TempElement = head;
while(TempElement.naechstesElement != null){
TempElement = TempElement.naechstesElement;
}
EvkListenelement NewElement = new EvkListenelement();
NewElement.setzNutzdaten(nutzdaten);
AEvkListenelement naechstesElement = null;
NewElement.naechstesElement = NewElement;
}
public void entferne(Object nutzdaten){
AEvkListenelement TempElement = head;
AEvkListenelement NextElement = TempElement.naechstesElement;
while(TempElement.naechstesElement != null){
if(NextElement.nutzdaten.equals(nutzdaten)) break;
TempElement = TempElement.naechstesElement;
NextElement = TempElement.naechstesElement;
}
TempElement.setzNaechstesElement(NextElement.naechstesElement);
}
}
Java:
public class EvkListenelement extends AEvkListenelement {
public void setzNutzdaten(Object element){
nutzdaten = element;
}
public void setzNaechstesElement(AEvkListenelement nachfolger){
naechstesElement = nachfolger;
}
public Object gibNutzdaten(){
return nutzdaten;
}
public AEvkListenelement gibNaechstesElement(){
return naechstesElement;
}
}
Java:
public class EvkTest {
public static void main(String[] args){
EinfachVerketteteListen liste = new EinfachVerketteteListen();
liste.zumAnfangHinzu("5");
System.out.println(liste);
}
}
Für eure Hilfe wäre ich sehr dankbar!