# Liste selbst schreiben



## Laren (26. Apr 2011)

Hi,

Die folgende Aufgabe haben wir bekommen:


> Ein Programm soll Namen (strings) in sortierter Reihenfolge mittels einer doppelt
> (rückwärts) verketteten Liste (siehe Vorlesung) mit den Methoden add und remove
> verwalten.  Die Namen sollen in die Liste sortiert eingefügt werden; es versteht
> sich von selbst, dass in der Liste keine Namen doppelt vorkommen dürfen !
> ...



Aber ich weis jetzt nicht genau, wie ich das umsetzten soll. Array´s wären ja ja quatsch, da die ja nicht dynamisch sind. Wie könnte ich das umsetzen?

Viele Grüße


----------



## Simon_Flagg (26. Apr 2011)

mach eine klasse Element

```
public class Element {
  String text;
  Element vorigesElement;
  Element naechstesElement;
}
```

und die Methoden, die das abgehen und aufbauen


----------



## Laren (26. Apr 2011)

danke, aber ich vertehe jetzt nicht genau, wie du das meinst.
Ich habe eine Klasse Element, da steht im Konstruktor, was mein voriges und mein nächstes Element ist, soweit so gut.
jetzt hab ich da einen kleinen Dialog da steht ne Methode hinzufügen

```
public void hinzufuegen()
{
Element e = new Element();
//?
}
```

Da kann ich ja dann ein neues Element anlegen, aber wo füge ich das hinzu? Ich bräuchte ja ne "Liste", aber wie realisiere ich die?

Viele Grüße


----------



## faetzminator (26. Apr 2011)

Du machst um den ersten Knoten ein Objekt namens [c]DoubleLinkedSortedList[/c] o.ä., welches sich das erste Element merkt. Du beginnst immer bei diesem mit suchen. Solange die Wörter "kleiner" (AAA < AAB) sind, gehst du ein Element weiter (bis zum Ende der Liste -> [c]naechstesElement == null[/c]). Ist das Wort gleich, muss es nicht mehr hinzugefügt werden. Ist das aktuelle Wort "grösser", kannst du deines davor einsetzen. Dabei muss natürlich noch beachtet werden, dass - falls man etwas vor das erste Element setzt - das erste Element ersetzt werden muss (in der Liste).


----------



## Laren (26. Apr 2011)

danke, funktioniert nun....
aber nächstes Problem ;(

die Liste dürfte nun funktionieren, aber wie kann ich sie ausgeben

```
public class DoubleLinkedList {
	
	private int size;
	private FirstLinkElement fle;
	private Element linkDavor;


	public void add(String text)
	{
		if ( size ==0) {
		 fle = new FirstLinkElement(null, text);
		 size++;
		}
		else if(size==1)
		{
			Element e = new Element(fle, null, text);
			fle.setElementDanach(e);
			linkDavor = e;
			size++;
		}
		else if(size>1)
		{
			Element e = new Element(linkDavor, null, text);
			linkDavor.setElementDanach(e);
			linkDavor=e;
			size++;
		}
	}
	
}
```


----------



## Simon_Flagg (26. Apr 2011)

du gehst vom root-Element aus

```
for (Element el = root; el != null; el = el.naechstes) {
  System.out.println(el.text);
}
```

Variablennamen sind falsch


----------

