Moin noch mals,
kann mir wer sagen wie ich die Ausgabe hinbekomme ohne StringBuffer zu benutzen denn ich soll die Ausgabe auch noch Rekursiv Programmieren aber ich komm auf keine Anständige Lösung für das Problem.
gruß[/quote]
Code:
package VerkList2;
public class ListenTest {
public static void main(String args[]) {
Liste l = new Liste();
Grundtyp data1 = new Grundtyp(15);
Grundtyp data2 = new Grundtyp(2);
Grundtyp data3 = new Grundtyp(43);
Grundtyp data4 = new Grundtyp(17);
Grundtyp data5 = new Grundtyp(4);
Grundtyp data6 = new Grundtyp(8);
Grundtyp data7 = new Grundtyp(47);
l.insert(data1);
l.insert(data2);
l.insert(data3);
l.insert(data4);
l.insert(data5);
l.insert(data6);
l.insert(data7);
System.out.println(l.toString());
Grundtyp data8 = new Grundtyp(47);
Grundtyp p = l.search(data8);
if (p != null) l.delete(data8,p);
System.out.println(l.toString());
}
}
Code:
package VerkList2;
//Liste implementiert doppelt verkettete Liste
//Einfuegen in insert an Position p in O(1),
//Auffinden in find in O(n)
//Loeschen in delete an Position p in O(1)
public class Liste {
Grundtyp head; // Kopfelement
Grundtyp tail; // Schwanzelement
Liste() {
head = null;
tail = null;
}
public void insert (Grundtyp x) {
if (head == null){
tail = new Grundtyp(x,null,null);
head = tail;
}
else
insert(x,head);
}
public void insert (Grundtyp x, Grundtyp p) {
Grundtyp hilf = new Grundtyp(x,p.next,p);
p.next = hilf;
if (hilf.next == null)
tail = hilf;
else
hilf.next.prev = hilf;
}
public void delete (Grundtyp x, Grundtyp p) {
if (p == head)
head = p.next;
p.prev.next = p.next;
if (p == tail)
tail = p.prev;
p.next.prev = p.prev;
}
public Grundtyp search(Grundtyp x) {
for (Grundtyp i = head;i != null;i = i.next)
if (i.dat.equals(x)) return i;
return null;
}
public String toString() {
StringBuffer st = new StringBuffer("");
for (Grundtyp i = head;i != null;i = i.next)
st.append(i.next == null ? i.dat.toString(): i.dat.toString()+", ");
return st.toString();
}
}
Code:
package VerkList2;
public class Grundtyp {
int key;
Grundtyp dat; // Grundtyp
Grundtyp next; // Zeiger auf Nachfolgerknoten
Grundtyp prev; // Zeiger auf Nachfolgerknoten
// eventuell weitere Komponenten
Grundtyp(){
this.key = 0;
}
Grundtyp(int key){
this.key = key;
}
public boolean equals(Grundtyp dat) {
return this.key == dat.key;
}
Grundtyp(Grundtyp dat, Grundtyp next, Grundtyp prev) {
this.dat = dat;
this.next = next;
this.prev = prev;
}
public String toString() {
StringBuffer st = new StringBuffer(""+key);
return st.toString();
}
}
kann mir wer sagen wie ich die Ausgabe hinbekomme ohne StringBuffer zu benutzen denn ich soll die Ausgabe auch noch Rekursiv Programmieren aber ich komm auf keine Anständige Lösung für das Problem.
gruß[/quote]