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:
Und die vererbte Klasse ist:
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
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