Liste selbst schreiben

Laren

Bekanntes Mitglied
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 !
Die Namen stehen in einer Eingabedatei (Name der Datei ist einzulesen!) jeweils
mit einem vorangestellten "+" für add oder einem "-" für remove.

Es dürfen keine Klassenbibliotheken für die Realisierung der sortierten Liste
verwendet werden.

Beachten Sie die Auswirkungen der "sortiert"-Bedingung auf die Sinnhaftigkeit von
Methoden aus der Beispielimplementierung des Skripts von Programmiersprachen I
(addFirst, addBefore usw. machen keinen Sinn. Welche bleiben übrig ? )

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

Bekanntes Mitglied
mach eine klasse Element
Java:
public class Element {
  String text;
  Element vorigesElement;
  Element naechstesElement;
}

und die Methoden, die das abgehen und aufbauen
 

Laren

Bekanntes Mitglied
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
Java:
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

Gesperrter Benutzer
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

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

die Liste dürfte nun funktionieren, aber wie kann ich sie ausgeben
Java:
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

Bekanntes Mitglied
du gehst vom root-Element aus
Java:
for (Element el = root; el != null; el = el.naechstes) {
  System.out.println(el.text);
}

Variablennamen sind falsch
 

Neue Themen


Oben