Einfach Verkettete Liste

Xeno1987

Mitglied
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:

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!
 
Y

yyannekk

Gast
ich vermute mal dein head element wurde nicht erzeugt und ist noch null.
Deswegen kommt eine NullPointerException wenn du head.setzNaechstesElement(NewElement); aufrufst (in Zeile 49 von deiner Implementierung)
D.h. entweder du musst dein head element vorher initialisieren (zB im Konstruktor von deiner Liste) oder dein neues Element wird der head falls der head null ist
 

diggaa1984

Top Contributor
ich hab jetzt nich die implementierung genau geprüft aber hier erstmal was:
Java:
public void zumAnfangHinzu(Object nutzdaten){
    EvkListenelement NewElement = new EvkListenelement(); //ok, Variablennamen kleine schreiben!
    NewElement.setzNutzdaten(nutzdaten); //ok
    NewElement = (EvkListenelement) head.gibNaechstesElement(); //dein NewElement mit neuem Inhalt ist nun futsch und head == null => NullPointerException
    head.setzNaechstesElement(NewElement); 
}

das is inhaltlich schonma falsch, und
Code:
head
wird vermutlich nirgends vorher gesetzt, daher die NPE in deinem recht kurzen Beispiel. Head sollte vermutlich auf das erste hinzugefügte Element zeigen!
 

ARadauer

Top Contributor
versuchen, das ganze mit papier und bleistifft zu lösen...

Java:
public void zumAnfangHinzu(Object nutzdaten){
      EvkListenelement NewElement = new EvkListenelement();
      NewElement.setzNutzdaten(nutzdaten);
      NewElement = (EvkListenelement) head.gibNaechstesElement();
      head.setzNaechstesElement(NewElement);
}
Beschreib mal mit eigenen worten was du da machst.. Was willst du machen?
ich will bei einer Liste von Elementen ein neues vorne einfügen...

-neues Element machen
-nächstes von heues auf head setzen
-head auf neues setzen

zb so... ungetestet
Java:
public void zumAnfangHinzu(Object nutzdaten){
      EvkListenelement newElement = new EvkListenelement();
      newElement.setzNutzdaten(nutzdaten);
      newElement.setNaechstesElement(head);
      head = newElement;
}
 

Xeno1987

Mitglied
so erst mal danke für die info habs hinbekommen aber jetzt gibt leider die speicheradresse aus wenn ich element hinzufüge. Da ist irgendwas bei der klassenzuweisung schief gelaufen.
 
G

Gast2

Gast
Was versuchst du denn auszugeben? Du musst dann die toString() Methode in der Klasse überschreiben.
 

Xeno1987

Mitglied
also laut aufgabenstellung stand oben soll ich mehrere Zahlen am Anfand am Ende und paar raus löschen und dann alles auf dem Bildschirm ausgeben!
 
G

Gast2

Gast
Du versuchst also
Code:
EinfachVerketteteListen
auszugeben? Dann überschreib deren toString() Methode.
 

Xeno1987

Mitglied
Ich hab jetzt in Klasse EvkListenElement geschreiben:

Java:
public String toString(){
		  
		  return (String) nutzdaten;
		}

aber ausgabe ist trotzdem die adresse!
 

Xeno1987

Mitglied
Java:
public static void main(String[] args){
		
		
		EinfachVerketteteListen list2 = new EinfachVerketteteListen();
		
		
		list2.zumAnfangHinzu(3);
		
		
		
		System.out.println(list2.toString());
	}
 

ARadauer

Top Contributor
Java:
public String toString(){
return "hier der String den du ausgeben möchtest, wenn jemand deinen liste ausgibt"
}
das hast du doch oben schon bei deinem knoten gemacht...

oder ist die Frage, wie jetzt konkret für die liste...
wenn ich dir diese 5 Zeilen poste hätte ich dir 50% deiner aufgabe geschrieben, das willst du selbst nicht oder?
 

Xeno1987

Mitglied
also ich habs jetzt anders gelöst indem ich eine methode void ausgeben geschrieben habe, klappt wunderbar nur jetzt macht die methode zumendehinzu und entferne nicht das was sie machen soll?????

erstmal meine ausgeben methode:

Java:
public void print(){
		
		AEvkListenelement aktuell = head;
		while (aktuell.naechstesElement != null){
			System.out.println(aktuell.gibNutzdaten());
			aktuell = aktuell.naechstesElement;
	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R einfach verkettete Liste Java Basics - Anfänger-Themen 1
R einfach verkettete Liste Java Basics - Anfänger-Themen 12
C Methoden Über eine einfach verkettete Liste Java Basics - Anfänger-Themen 8
O Einfach verkettete Liste - Revert Methode Java Basics - Anfänger-Themen 1
S Einfach verkettete Liste Element an bestimmter Position einfügen Java Basics - Anfänger-Themen 24
R Erste Schritte Verkettete Liste will einfach nicht in meinen Schädel Java Basics - Anfänger-Themen 11
K Einfach Verkettete Liste - addFirst() Java Basics - Anfänger-Themen 7
X Einfach verkettete Liste, keine Fehlermeldung Programm friert ein Java Basics - Anfänger-Themen 4
K Datentypen Einfach/Doppelt verkettete Liste Java Basics - Anfänger-Themen 4
N einfach verkettete liste fehler Java Basics - Anfänger-Themen 5
N einfach verkettete liste Java Basics - Anfänger-Themen 3
B OOP Einfach verkettete Liste - rekursive Methoden Java Basics - Anfänger-Themen 1
S einfach verkettete Liste Java Basics - Anfänger-Themen 19
T Einfach verkettete Liste: Wie Elemente löschen? Java Basics - Anfänger-Themen 4
D Einfach verkettete Liste Java Basics - Anfänger-Themen 20
C einfach verkettete Liste -> Elemente vertauschen Java Basics - Anfänger-Themen 2
R einfach verkettete Liste, intersect Java Basics - Anfänger-Themen 4
E einfach verkettete liste, nullPointerException Java Basics - Anfänger-Themen 5
S Einfach-Verkettete-Listen Ausgabe zeigt nur 1. und letzte instanz Java Basics - Anfänger-Themen 2
V einfach verkettete Listen Java Basics - Anfänger-Themen 10
berserkerdq2 Wozu benötigt man den BiPredicate, kann ich nicht einfach eine normale Methode nutzen, statt BiPredicate? Java Basics - Anfänger-Themen 3
I Programm erkennt nicht an das Array zurückgegeben wird trotz Initialisierung *einfach* Java Basics - Anfänger-Themen 9
N Erste Schritte HelloWorld möchte einfach nicht laufen Java Basics - Anfänger-Themen 11
K Programm stoppt einfach ohne Grund Java Basics - Anfänger-Themen 4
N Best Practice Doppelte und einfach Anführungsstriche in Runtime.getruntime().exec() Java Basics - Anfänger-Themen 6
O Exception behandlung einfach Ueben mit Fakt! Java Basics - Anfänger-Themen 10
Hanschyo Programm schließt sich einfach Java Basics - Anfänger-Themen 2
S Einfach verkette Liste Java Basics - Anfänger-Themen 27
Hacer Operationen einfach verketteter Listen Java Basics - Anfänger-Themen 22
C Methoden Einfach verkette Liste - int Werte aufsteigend sortieren Java Basics - Anfänger-Themen 1
V Codezeile wird einfach nicht ausgeführt Java Basics - Anfänger-Themen 23
M Quadrat zeichnen einfach bitte! Java Basics - Anfänger-Themen 2
J Einfach verkettet List: Ausgabe ohne null Java Basics - Anfänger-Themen 11
N Einfacher Rechner (für mich nicht so einfach) Java Basics - Anfänger-Themen 5
M Array in ein Array übertragen (möglichst einfach) Java Basics - Anfänger-Themen 6
T Input/Output Daten/Objekte einfach speichern Java Basics - Anfänger-Themen 5
R Methoden... ich vesteh sie einfach nicht Java Basics - Anfänger-Themen 15
llabusch Verkette Listen - Einfach und Doppelt Java Basics - Anfänger-Themen 3
C Erste Schritte Problem mit der Division von Koeffizienten... oder einfach nur irgendwlechen zahlen Java Basics - Anfänger-Themen 10
D Klassen Klassen, Objekte, Konstruktor - einfach erklärt Java Basics - Anfänger-Themen 12
B Variable wird einfach so wieder auf "null" gesetzt Java Basics - Anfänger-Themen 12
T Elemente im Vector werden einfach überschrieben! Java Basics - Anfänger-Themen 3
S ich begreife es einfach nicht -> zweck der Schnittstellen Java Basics - Anfänger-Themen 27
J Interface Wie funktioniert das mit den Interfaces. Ich verstehe es einfach nicht! :( Java Basics - Anfänger-Themen 15
W Java-Programm als Icon mit Doppelklick einfach öffnen ? Java Basics - Anfänger-Themen 3
M Layout einfach bilden Java Basics - Anfänger-Themen 4
I Weiß einfach nicht mehr weiter... Java Basics - Anfänger-Themen 3
O Wie kann man das einfach lösen? (dynamisch viele Attribute) Java Basics - Anfänger-Themen 6
A If-Schleife spinnt - ganz einfach Code - Riesen Problem :) Java Basics - Anfänger-Themen 9
Luk10 einfach animation Java Basics - Anfänger-Themen 2
E JMC - Dlls einbinden - möglichst einfach Java Basics - Anfänger-Themen 8
I einfach verkette Liste Java Basics - Anfänger-Themen 9
H Typumwandlung String --> Int (ganz einfach) Java Basics - Anfänger-Themen 9
O Observer - Einfach erklärt? Java Basics - Anfänger-Themen 5
K Ich verstehe switch einfach nicht Java Basics - Anfänger-Themen 4
M jar-Datei einfach umbenennen? Java Basics - Anfänger-Themen 8
S Filewriter schreibt einfach nicht Java Basics - Anfänger-Themen 6
G Opjektorientierte Programmierung (OOP). einfach für euch Java Basics - Anfänger-Themen 4
X WAV conversion ist einfach nicht möglich Java Basics - Anfänger-Themen 2
J jar erstellen. Es klappt einfach nicht Java Basics - Anfänger-Themen 14
L Eingeben Rechnen Ausgeben - Leider nicht so einfach Java Basics - Anfänger-Themen 31
P einfach frage zur vererbung Java Basics - Anfänger-Themen 9
G Frank A. - ports einfach öffnen und schließen Java Basics - Anfänger-Themen 3
M Caeser Verschlüsselung ganz einfach(nicht für mich) Java Basics - Anfänger-Themen 6
L while wird einfach übersprungen? Java Basics - Anfänger-Themen 4
D einfach berechnung einer onlinezeit Java Basics - Anfänger-Themen 25
B Thread will einfach nicht stoppen Java Basics - Anfänger-Themen 12
B Packages einfach kopieren? Java Basics - Anfänger-Themen 13
N Mein Applet findet -online- einfach die Klasse nicht ! Java Basics - Anfänger-Themen 6
S Java rundet einfach auf 0 Java Basics - Anfänger-Themen 2
L Ein Bild auf ein JFrame legen. nicht so einfach? =( Java Basics - Anfänger-Themen 11
M Tablelayout einbinden - ich schaff's einfach nicht Java Basics - Anfänger-Themen 16
D Button Text will einfach nicht erscheinen Java Basics - Anfänger-Themen 6
M Methoden. ich versteh das einfach nicht! Bitte helfen! Java Basics - Anfänger-Themen 4
H Kann man in Java einfach einen Beep erzeugen Java Basics - Anfänger-Themen 2
C einfach aber komisch Java Basics - Anfänger-Themen 5
P Restart Button für einfach Applikation Java Basics - Anfänger-Themen 7
H RAF geht einfach nicht Java Basics - Anfänger-Themen 12
D RegEx Probleme - wahrscheinlich zu einfach. Java Basics - Anfänger-Themen 2
H Einfach Datenübergabe Java Basics - Anfänger-Themen 4
S RegEx Syntax - ich verstehe sie einfach nicht! Java Basics - Anfänger-Themen 3
V Teil eines Programms funktioniert einfach nicht Java Basics - Anfänger-Themen 2
V If Schleife wird beim ausführen einfach ignoriert Java Basics - Anfänger-Themen 4
D Einfach Leerzeile einfügen ? Java Basics - Anfänger-Themen 2
G Owner von JDialog;Komme einfach nicht weiter Java Basics - Anfänger-Themen 4
B Applet geht einfach nicht Java Basics - Anfänger-Themen 16
S UIManager kann einfach nicht aufgelöst werden Java Basics - Anfänger-Themen 4
R Einfach if-Abfrage Java Basics - Anfänger-Themen 7
B Eine Linie zeichnenmit Java, ich verstehe das einfach nicht Java Basics - Anfänger-Themen 4
A Einfach, gut erklärte Übungen!!! Java Basics - Anfänger-Themen 3
M Verkettete Liste Java Basics - Anfänger-Themen 1
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
Igig1 Autoparkplatz verkettete Liste erstes und letztes Auto Java Basics - Anfänger-Themen 13
R Rückgabe: verkettete Liste Java Basics - Anfänger-Themen 2
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
Y Einfügen in eine doppelt verkettete Liste Java Basics - Anfänger-Themen 8
A Doppelt verkettete Liste rückwärts ausgeben Java Basics - Anfänger-Themen 17
D Doppelt Verkettete Zirkular-Liste Java Basics - Anfänger-Themen 1
A Verkettete Liste Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben