hallo,
habe wieder mal hausaufgaben im hassfach
heir sind die aufgaben(bitte nicht abschrecken, sind nur anfängersachen!!!)
Aufgabe 1 Einfach verkettete Liste
1. Implementieren Sie eine generische Klasse SingleLinkedList<T>, die eine einfach verkettete
Liste von Elementen eines beliebigen Datentyps T darstellt. Sie soll eine innere Klasse
Node enthalten, die ein Element der Liste symbolisiert. Jeder Knoten muss eine Referenz
auf seinen Wert (vom Typ T) und eine Referenz auf den Nachfolgeknoten enthalten. Die
Liste selbst sollte Referenzen auf den ersten und den letzten Knoten besitzen.
2. Implementieren Sie einen parameterlosen Konstruktor SingleLinkedList(), der eine leere
Liste initialisiert.
3. Implementieren Sie einen Konstruktor SingleLinkedList(T[] elements), der eine Liste
initialisiert, welche bereits mit den Elementen im ubergebenen Array gefullt ist.
Aufgabe 2 Listenmethoden
1. Implementieren Sie die Methode void appendHead(T element), die ein neues Element
an den Anfang der Liste anfugt.
2. Implementieren Sie die Methode T popHead(), die das Element am Anfang der Liste
zuruckgibt und entfernt.
3. Implementieren Sie die Methode void appendTail(T element), die ein neues Element
an das Ende der Liste anfugt.
4. Implementieren Sie die Methode T popTail(), die das Element am Ende der Liste zuruckgibt
und entfernt.
Hinweis: Bedenken Sie bei allen Methoden den Sonderfall einer leeren oder einelementigen Liste.
Wenn versucht wird, ein Element aus einer leeren Liste zu entfernen, sollte die Methode den
Zustand der Liste nicht andern und null zuruckgeben.
Aufgabe 3 Test
Schreiben Sie eine Klasse TestListe, die einen Test Ihrer Listenimplementation erlaubt. Die
main-Methode soll eine Liste von Strings mit vier vorgegebenen Elementen erzeugen und mit
Hilfe der toString-Methode ausgeben. Testen Sie dann jede Methode zum Hinzufugen oder
Loschen von Elementen mindestens einmal und lassen Sie die Liste nach jedem Schritt erneut
ausgeben. Sie sollten dabei die Liste mindestens einmal komplett leeren und danach wieder
Elemente anfugen.
und hier sind meine 2 klassen...
bei beidem klappt die kompilierung, doch auf der console wird die folgende warnung ausgegeben:
Note:Testliste.java uses unchecked or unsafe operations
Note:Recompile with -Xlint:unchecked for details
ich würde mich sehr auf antworten freuen
danke im vorraus
habe wieder mal hausaufgaben im hassfach
heir sind die aufgaben(bitte nicht abschrecken, sind nur anfängersachen!!!)
Aufgabe 1 Einfach verkettete Liste
1. Implementieren Sie eine generische Klasse SingleLinkedList<T>, die eine einfach verkettete
Liste von Elementen eines beliebigen Datentyps T darstellt. Sie soll eine innere Klasse
Node enthalten, die ein Element der Liste symbolisiert. Jeder Knoten muss eine Referenz
auf seinen Wert (vom Typ T) und eine Referenz auf den Nachfolgeknoten enthalten. Die
Liste selbst sollte Referenzen auf den ersten und den letzten Knoten besitzen.
2. Implementieren Sie einen parameterlosen Konstruktor SingleLinkedList(), der eine leere
Liste initialisiert.
3. Implementieren Sie einen Konstruktor SingleLinkedList(T[] elements), der eine Liste
initialisiert, welche bereits mit den Elementen im ubergebenen Array gefullt ist.
Aufgabe 2 Listenmethoden
1. Implementieren Sie die Methode void appendHead(T element), die ein neues Element
an den Anfang der Liste anfugt.
2. Implementieren Sie die Methode T popHead(), die das Element am Anfang der Liste
zuruckgibt und entfernt.
3. Implementieren Sie die Methode void appendTail(T element), die ein neues Element
an das Ende der Liste anfugt.
4. Implementieren Sie die Methode T popTail(), die das Element am Ende der Liste zuruckgibt
und entfernt.
Hinweis: Bedenken Sie bei allen Methoden den Sonderfall einer leeren oder einelementigen Liste.
Wenn versucht wird, ein Element aus einer leeren Liste zu entfernen, sollte die Methode den
Zustand der Liste nicht andern und null zuruckgeben.
Aufgabe 3 Test
Schreiben Sie eine Klasse TestListe, die einen Test Ihrer Listenimplementation erlaubt. Die
main-Methode soll eine Liste von Strings mit vier vorgegebenen Elementen erzeugen und mit
Hilfe der toString-Methode ausgeben. Testen Sie dann jede Methode zum Hinzufugen oder
Loschen von Elementen mindestens einmal und lassen Sie die Liste nach jedem Schritt erneut
ausgeben. Sie sollten dabei die Liste mindestens einmal komplett leeren und danach wieder
Elemente anfugen.
und hier sind meine 2 klassen...
bei beidem klappt die kompilierung, doch auf der console wird die folgende warnung ausgegeben:
Note:Testliste.java uses unchecked or unsafe operations
Note:Recompile with -Xlint:unchecked for details
Java:
public class SingleLinkedList <T> {
private class Node{
public T element;
public Node next;
public Node( T element){
this.element=element;
next=null;
}
public Node (T element, Node ref){
this.element = element;
this.next = ref;
}
}
public Node head;
public Node end;
public SingleLinkedList(){ //Konstruktor, de eine leere Liste initialisiert
head.next=end;
end.next=null;
}
public SingleLinkedList (T[] elements){
head.next=end;
end.next=null;
SingleLinkedList<T> L= new SingleLinkedList();
for(int i=elements.length-1; i>=0; i--){
L.appendHead(elements[i]);
}
}
public void appendHead(T element){
Node n=new Node(element);
Node a= head.next;
head.next=n;
n.next=a;
}
T popHead(){
if(head.next==end){ return null;}
else{
Node Anfang=head.next;
head.next=head.next.next;
return (T)Anfang;}
}
void appendTail(T element){
if(head.next==end){appendHead(element);}
else{
Node v=head.next;
while(v.next != null){
v=v.next;}
Node a=new Node(element);
v.next=a;
}
}
T popTail(){
if(head.next==end){return null;}
else{
Node v=head.next;
while (v.next!= null){
v=v.next;}
Node letztes=v;
Node w=head.next;
while(w.next!=v){
w=w.next;}
w.next=null;
return (T) letztes;
}
}
}
Java:
public class TestListe{
public static void main (String[]args){
String[]a=new String[4];
a[0]="Informatik";
a[1]="ist";
a[2]="mega-";
a[3]="S*****e!";
SingleLinkedList <String> A= new SingleLinkedList(a);
//TESTE METHODE popHead()
System.out.println(A.popHead());//wird "Informatik" ausgegeben?
A.toString(); //wurde das erste Element gelöscht?
//TESTE METHODE popTail()
System.out.println(A.popTail());// wird "S*****e!" ausgegeben?
A.toString(); //wurde das letzte Element gelöscht?
//wir leeren die list : da es nur noch 2 elemente gibt muss man die
// Methode potail() 2 mal aufrugen
A.popTail();
A.popTail();
A.toString(); //ist die liste jetzt leer?
// TESTE METHODE appendHEAD()
A.appendHead("NEIN DAS STIMMT DOCH NICHT");
A.toString();// wurde das element hinzugefügt?
//TESTE METHODE appendTail()
A.appendTail("INFO IST NICHT S*****E");
A.toString();// wurde das element hinzugefügt?
}
}
ich würde mich sehr auf antworten freuen
danke im vorraus