Servus,
hab hier ein problem mit meiner tollen doppelt verketteten Liste. Ich kann zwar wunderbar Elemtente in meine Liste einfügen, aber wenn ich nach einem Element suchen möchte um genau das zu entfernen läuft irgendwas im Code schief. Es kommt zu keiner Exception oder sonstigen fehlermeldung, aber ich nehme mal an das ich die suche nach dem element falsch programmiert habe. Habe die Stelle der Suche in der Klasse Liste kommentiert. Schon mal danke für sämtliche Hinweise, Kritik und Anregungen.
Gruß
P.S. Ich weiß das es mit der API schneller und einfacher geht, soll aber nich!
Hier mal der Code:
hab hier ein problem mit meiner tollen doppelt verketteten Liste. Ich kann zwar wunderbar Elemtente in meine Liste einfügen, aber wenn ich nach einem Element suchen möchte um genau das zu entfernen läuft irgendwas im Code schief. Es kommt zu keiner Exception oder sonstigen fehlermeldung, aber ich nehme mal an das ich die suche nach dem element falsch programmiert habe. Habe die Stelle der Suche in der Klasse Liste kommentiert. Schon mal danke für sämtliche Hinweise, Kritik und Anregungen.
Gruß
P.S. Ich weiß das es mit der API schneller und einfacher geht, soll aber nich!
Hier mal der Code:
Code:
public class Knoten {
public int Daten ;
Knoten next;
Knoten previous;
public Knoten(int d){
Daten=d;
}
public void zeigeKnoten(){
System.out.print("{"+Daten+"}");
}
public final Knoten getNext(){
return next;
}
public final Knoten getPrevious(){
return previous;
}
public final void setNext(Knoten next){
this.next=next;
}
public final void setPrevious(Knoten prev){
this.previous=prev;
}
}
public class Liste {
private Knoten first; /*Erstes Element*/
private Knoten last; /*Letztes Element*/
static int count; /*Anzahl der Elemente*/
public Liste(){
first = null;
last = null;
count = 0;
}
boolean isLeer(){
return(first==null);
}
public void add(int d){
Knoten x = new Knoten(d);
if(!isLeer()){
x.setNext(first);
x.setPrevious(null);
first.setPrevious(x);
first=x;
}else{
x.setNext(null);
x.setPrevious(null);
first=x;
last=x;
}
count++;
}
public Knoten remove(int d){
Knoten z = new Knoten(d);
// Knoten current = first;
if(!isLeer()){
/*An dieser Stelle wird gesucht*/
Knoten current=first;
while((current!=null)&&(current!=z)){
current=current.getNext();
}
/*Ab hier fange ich an das jeweilige Element an der entsprechenden Stelle auszuketten*/
if(current!=null){
if((current==first)&&(current==last)){
first=null;
last=null;
}else if(current==last){
last=last.getPrevious();
last.setNext(null);
}else if(current==first){
first=first.getNext();
first.setPrevious(null);
}else{
Knoten previous=current.getPrevious();
Knoten next=current.getNext();
previous.setNext(next);
next.setPrevious(previous);
}
count--;
}
}
return z;
}
public void print(){
Knoten current = first;
while(current!=null){
current.zeigeKnoten();
current=current.next;
}
System.out.print("\t Anzahl der Elemente:"+count);
System.out.println();
}
public static void main(String[]args){
Liste neueListe = new Liste();
neueListe.add(5);
neueListe.print();
neueListe.remove(5);
neueListe.print();
}
}