Vererbung: Doppelt verkettete Listen

Status
Nicht offen für weitere Antworten.

xpucto

Mitglied
Hallo,

Habe eine Java Übung zu erledigen, ich muss eine Klasse aus einer einfachen verketteten Liste Klasse implementieren um eine Doppelt verkettete Listen zu bekommen. Nun, die Variable "current" schaffe ihc nicht zu instanzieren.

Der Code der ursprüglichen Klasse ist:
Code:
//MyList
//Übung 2

class ListNode {
	Object data;
	ListNode next;

	//Konstruktor
	ListNode(Object o) { this( o, null ); }

	//Konstruktor
	ListNode(Object o, ListNode nextNode) {
		data = o;
		next = nextNode;
	}
	Object getObjecit() {return data;}
	ListNode getNext() {return next;}
	}// End Class List node


public class MyList {
	/*Private ListNode firstNode;
	private ListNode lastNode;
	private String name; //Name des Liste
	*/
	 ListNode firstNode;
	 ListNode lastNode;
	 String name; //Name des Liste

	//Konstruktor fuer leere Liste mit Namen s
	public MyList(String s) {
	name = s;
	firstNode = lastNode = null;
	}//End Konstruktor

	//Default Konstruktor
	public MyList() { this( "Liste" ); }
	
	//Einsetzen eines Objektes an die erste Stelle
	public void insertAtFront(Object newdata) {
		if (isEmpty())
			firstNode = lastNode = new ListNode(newdata);
		else
			firstNode = new ListNode(newdata, firstNode);
	}//End insertAtFront

	//Einsetzen eines Objektes an die letzte Stelle
	public void insertAtBack(Object newdata) {
		if (isEmpty())
			firstNode = lastNode = new ListNode(newdata);
		else
			lastNode = lastNode.next = new ListNode(newdata);
	}//End insertAtBack

	//Entfernen des ersten Nodes
	public Object removeFromFront() throws EmptyListException {
		Object removeItem = null;

	if (isEmpty())
		throw new EmptyListException(name);

	removeItem = firstNode.data; //Einlesen von data
	//Anpassen der Listen-Referenzen
	if (firstNode.equals(lastNode))
		firstNode = lastNode = null;
	else
		firstNode = firstNode.next;
	return removeItem;
	}//End removeFromFront

	
	//Entfernen des letzten Nodes
	public Object removeFromBack() throws EmptyListException {
		Object removeItem = null;

	if (isEmpty())
		throw new EmptyListException(name);

	removeItem = lastNode.data; //Einlesen von data
	//Anpassen der Listen-Referenzen
	if (firstNode.equals(lastNode))
		firstNode = lastNode = null;
	else {
		ListNode current = firstNode;
	
	//Durchwandern der Liste
	while (current.next != lastNode)
		current = current.next;
	lastNode = current;
	current.next = null;
	}//End else

	return removeItem;
	}//End removeFromBack

	// Feststellen, ob Liste leer ist
	public boolean isEmpty()
	{ return firstNode == null; }

	//Inhalt der Liste ausgeben
	public void print() {
		if (isEmpty()) {
		System.out.println(name + " ist leer.");
	return;
	}//End if
	
	System.out.println("Inhalt von " + name + ": " );
	ListNode current = firstNode;
	
	while (current != null) {
		System.out.print(current.data.toString() + " " );
		current = current.next;
	}//End while
	System.out.println( "\n" );
	}//End print
}//End MyList

Und die vererbte Klasse ist:
Code:
//Uebung 2

class DLNode extends ListNode{
	DLNode prev;
	
	//Konstruktor
	public DLNode (Object o) {
	super (o);
	}//End Konstruktor

	//Konstruktor
	public DLNode (Object o, DLNode nextNode, DLNode prevNode) {
	super(o,nextNode);
	prev = prevNode;
}//End Konstruktor	
 
	DLNode getPrev() {return prev;}
}//End DLNode


class DoublyLinkedList extends MyList {
	
	//Konstruktor fue leere Liste
	/*public DoublyLinkedList(String s) {
	super(s);
	}*/

	public DoublyLinkedList() {
	super();
	}
	
	//Festellen, ob das Objekt vorhanden ist
	public boolean isInList (Object o) {
	boolean exist = false;
	if (firstNode.equals(lastNode))
		firstNode = lastNode = null;
	else 
		DLNode current = firstNode;
		
	
	//Durchwandern der Liste
	while (current.next != lastNode) {
		current = current.next;
		if (current == o) 
		exist = true;
	}//End while

	/*if (exist ==1 ) 
		System.out.println( o + " ist in der Liste.");
	else
		System.out.println( o + " ist NICHT in der Liste.");
	*/

	}//End isInList

	//Einsetzen eines Objektes bevor

/*	public void insertBefore(Object newdata, Objekt where) {
		if (isEmpty())
			firstNode = lastNode = new ListNode(newdata);
		else {
			firstNode = current;
	}//End else
	}//End insertAtFront
i*/

}//End DoublyLinkedList

Ich kann schon glauben das es ziemlich mühsam sich das ganze anzuschauen, aber Falls mir Jemdan sagen kann warum, ich mit der Variable "current" Probleme habe, würde ich sehr dankbar sein.

mfG,

Christophe
 

meez

Top Contributor
Es wäre sogar noch bedeutend einfacher, wenn du uns mitteilen würdest, was den deiner Meinung nach mit der Var Current nicht stimmt ... Oder besser gesagt, wie du zu der Annahme kommst...
 

Sky

Top Contributor
xpucto hat gesagt.:
Nun, die Variable "current" schaffe ihc nicht zu instanzieren.

Ich habe nicht ganz verstanden, was Du vorhast. Aber in Anbetracht der Tatsache, dass es sich bei 'current' um eine Variable handelt, die lokal in einer Methode liegt wirste da wohl nicht rankommen!
 

xpucto

Mitglied
Ich bekomme di Meldung:
./DoublyLinkedList.java:38: not a statement
DLNode current = firstNode;

In MyList.java wird curent auf der Zeile 85 ohne Problem instanziert:
ListNode current = firstNode;

Wenn ich aber bei der vererbte Klasse DoublyLinkedList diese current Variable wieder verwenden will, bekomme ich die oben gennante Fehler Meldung. Das ist bei der Zeile 39:
DLNode current = firstNode;
Ich will nähmlich die List vom Anfang durchgehen. Aber was in der ursprünglichen Klasse funktionniert, funktionniert bei der vererbten Klasse nicht mehr.

Christophe
 

Sky

Top Contributor
Dieses Konstrukt macht Dir Ärger:
Code:
else 
      DLNode current = firstNode;

Das Problem ist, dass Du in deine else-Anweisungen nicht in einen Block schreibst. Er führt also in der nur die 1. Zeile nach dem else aus, was natürlich wenig Sinn macht.

Machs mal so:
Code:
else { // Neue Klammer!
      DLNode current = firstNode; 
      // deine Restlichen Anweisungen für den else-Fall
} // Neue Klammer!
 

meez

Top Contributor
Schreib die Variablendeklaration nicht in den else Block, sondern nur die Zuweisung, da sie sonst nur innerhalb des else Blocks gueltig ist....
Also so:
Code:
DLNode current;
if (...) {
} else {
      current = firstNode
}
 

xpucto

Mitglied
Jetzt kann ich kompilieren aber ich kriege die Meldung

Exception in thread "main" java.lang.NullPointerException
at DoublyLinkedList.isInList(DoublyLinkedList.java:35)
at DListTest.main(DListTest.java:49)

Also der Zeile 36 von DoublyLinkedList.java:
if (firstNode.equals(lastNode))

Weißt ihr vielleicht warum?

Christophe
 

meez

Top Contributor
Ach ja...Wenn du die Deklaration auch in den Block schreiben willst, sind die Klammern unentbehrlich....
 

meez

Top Contributor
Hau mal noch das in die if Verzweigung;


Code:
if (firstNode ==null || firstNode.equals(lastNode))  {
...
 

xpucto

Mitglied
Ok. Danke. Was ich nicht verstehe ist dass, es bei MyList.java funktionniert hat. Auf der Zeile 65:
if (firstNode.equals(lastNode))
firstNode = lastNode = null;
??
 

xpucto

Mitglied
Ich verstehe auch nicht warum, ich die gleiche Meldung:

Exception in thread "main" java.lang.NullPointerException
at DoublyLinkedList.isInList(DoublyLinkedList.java:45)
at DListTest.main(DListTest.java:49)

bekomme für die Zeile 43:
//Durchwandern der Liste
while (current.next != lastNode) { //Zeile 43
current = current.next;
if (current == o)
exist = true;
}//End while
 

xpucto

Mitglied
Danke. Ich habe das Ganze korrigiert.
Bin ein bißchen überfordert. Muss mir das Ganze in ruhe noch einaml anschauen.

Danke.

Christophe
 

xpucto

Mitglied
Ich habe mein Code korrigiert und kriege keine Fehler mehr. Nur Wenn ich ein String in die Liste reinbringe, sagte er, es ist nicht drinnen.

Also:
Code:
//Ist o in der Liste vorhanden?
	boolean exist;
	exist = objList.isInList(i);
	if (exist)
                System.out.println( i + " ist in der Liste.");
        else
                System.out.println( i + " ist NICHT in der Liste.");
        
	//zweite Test
	//objList.insertAtBack(s);
	objList.insertAtFront(s);
        objList.print();
	exist = objList.isInList(s);
	if (exist)
                System.out.println( s + " ist in der Liste.");
        else
                System.out.println( s + " ist NICHT in der Liste.");
Mit dem zweiten Test, sollte er das Objekt finden. Er findet es aber Nicht.
Hier ist die methode isInList:

Code:
public boolean isInList (Object o) {
	boolean exist = false;
	if (firstNode == null || firstNode.equals(lastNode)) {
		firstNode = lastNode = null;
	System.out.println( "Attention tout est null!" );
	}//End if
	else {
		ListNode current = firstNode;

	System.out.println( "Correct!" );
	//Durchwandern der Liste
	do{
		current = current.next;
		if (current == o)
		exist = true;
	}
	while (current.next != lastNode);
	}// End else
	
return exist;
	}//End isInList

Vielleicht sieht Jemand, wo der Fehler ist.

Danke.

Christophe
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
B Vererbung Java Basics - Anfänger-Themen 12
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1
B Vererbung Vererbung Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
A Benötige Hilfe bei Vererbung Java Basics - Anfänger-Themen 1
M Anfängerprobleme mit Vererbung Java Basics - Anfänger-Themen 27
J Vererbung Java Basics - Anfänger-Themen 9
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben