hallo,
ich soll eine doppelt verkettete liste erstellen. und davon das erste (!!) element löschen können. Das letzte hab ich schon hinbekommen. aber wie mach ich es das ich das erste löschen kann??
ich soll eine doppelt verkettete liste erstellen. und davon das erste (!!) element löschen können. Das letzte hab ich schon hinbekommen. aber wie mach ich es das ich das erste löschen kann??
Code:
public class DLList<E>{
Cell start;
Cell cursor;
Cell end;
/**
* dummy
*/
public DLList(){
start= new Cell (null, null, null);
end= new Cell (start, null, null);
start.next=end;
cursor=start;
}
private void start(){
cursor=start;
}
private void next(){
if (cursor==end)
cursor=start;
else
cursor = cursor.next;
}
private void prev(){
if(cursor==start)
cursor=end;
else
cursor= cursor.prev;
}
public void insertAtEnd(E e){
Cell newCell= new Cell (cursor, e, cursor.next);
cursor.next.prev=newCell;
cursor.next=newCell;
cursor=cursor.next;
}
/**
* methode zum anschauen
*/
public String toString(){
Cell hilfsCell=start.next;
StringBuffer list= new StringBuffer("( ");
while (hilfsCell != end){
list.append(hilfsCell.inhalt().toString()+" ");
hilfsCell=hilfsCell.next;
}
list.append(")");
return new String(list);
}
/**
* nur zum besseren verständnis ;)
*/
public void deleteLast (){
if(cursor!=start && cursor!=end){
cursor.prev.next=cursor.next;
cursor.next.prev=cursor.prev;
cursor=cursor.prev;
}
}
public void removeFirst(){
if(cursor!= start && cursor != end){
cursor.prev.prev.next=cursor.next;
cursor.next.prev=cursor.prev.prev;
cursor=cursor.prev;
}
}
private class Cell<E>{
Cell prev;
E inhalt;
Cell next;
/**
* Konstruktor für CEll
*/
public Cell (Cell p,E e, Cell n){
prev=p;
inhalt=e;
next=n;
}
/**
* Inhalt der Cell
*/
public E inhalt(){
return inhalt;
}
}//Ende der Klasse Cell
}//Ender der Klasse DLList