Home » Teaching » Lectures » PI2 » PID
Übungen zu Praktische Informatik: Datenstrukturen
Mitteilungen für Gruppen 2+3, LVA-Leiter: Reinhard Wolfinger
Datum |
Kategorie |
Mitteilung |
|
|
Betrifft:
Übung 5 - Zahlenmenge - tabSize?
Frage:
Wir sollen alle
Zahlen vom Datentyp long speichern können. Ein Array in Java
kann aber nur mit Integerwerten indiziert werden und somit
maximal 2^31-1 Werte speichern. Da es aber 2^64 mögliche long
Werte gibt kann das Array irgendwann nicht mehr
vergrößert werden.
Antwort:
Sie müssen den 8
Byte-Schlüssel (long) mit Hilfe einer Hashfunktion auf einen
Tabellenplatz (Adresse) abbilden. Die Hashtabelle darf auf keinen Fall mit
einer Größe 2^32 Byte angelegt werden. Bedenken Sie
wie viel Speicherplatz in diesem Fall schon eine
leere Datenstruktur Zahlenmenge belegen
würde.
In die Hashtabelle soll zwar jeder
mögliche Long-Wert gespeichert werden können. Aber
jeweils nur eine Auswahl, niemals alle 2^64 verschiedenen
Long-Werte gleichzeitig.
Eine Zahlenmenge kann etwa so aussehen:
{ 3, 24, 1004, 2345, 1000032 }
Legen Sie die Hashtabelle zunächst mit kleiner tabSize an und vergrössern sie bei Bedarf mittels Rehash.
|
18.05.2006 |
FAQ |
Betrifft:
Übung 5 - Zahlenmenge -
Differenz/Vereinigung
Frage:
Die Funktionen
welche die Schnittmenge, Vereinigungsmenge und Differenzmenge bilden,
sollen die Objekte von denen sie aufgerufen werden direkt
verändern oder eine Kopie anlegen, die dann verändert
und zurückgegeben wird und somit das aufrufende Element
unverändert bleibt?
Antwort:
Die Methode für den Mengendurchschnitt
würde wie folgt aussehen.
class Set
{
public Set Intersect(final Set set)
{
...
return .....
}
Diese Methode darf weder this noch den Eingangsparameter set
verändern. Sie muss ein neues Set-Objekt erzeugen. Eine Kopie
davon anlegen würde ich aber nicht. Einfach die Schnittmenge
neu erzeugen.
|
18.05.2006 |
FAQ |
Betrifft:
Übung 5 - Zahlenmenge - Duplikate?
Frage:
Soll die Zahlenmenge in Aufgabe1 mehrere
gleiche Zahlen enthalten können?
Antwort:
Die Zahlenmenge soll eine Zahl nur einmal
enthalten. Keine Duplikate.
|
10.04.2006 |
FAQ |
Betrifft:
Übung 3 - Methode remove()
Frage:
Der Suchbaum kann ja Punkte mehrfach enthalten.
Soll
nun die Methode remove() alle Knoten mit diesem Punkt löschen
oder
nur einen einzigen davon?
Antwort:
Nur einen Punkt löschen.
|
06.04.2006 |
Info |
Betrifft:
Übung 3 - Fehler in der Vorgabe
Problem:
In der der Methode testPerformance() der Klasse
TestPointList wird in Zeile 359 die falsche Methode aufgerufen. Statt
findInRangeX muss es hier findInRangeY heissen. Die aktualisierte
Vorgabe finden Sie hier,
|
05.04.2006 |
FAQ |
Betrifft:
Übung 3 - Duplikate im 2D-Suchbaum
Frage:
Sind im 2D-Suchbaum Duplikate, also mehrere
Punkte mit gleichen X/Y-Koordinaten, erlaubt?
Antwort:
Ja. Der 2D-Suchbaum kann Punkte mehrfach
enthalten.
|
22.03.2006 |
FAQ |
Betrifft:
Übung 2 - Methoden find() und remove()
in WordList2 implementieren?
Frage:
Müssen wir bei dieser Übung
die Methoden find() und remove() implementieren, oder handelt es
sich lediglich um eine Verbesserung der Wordlist0?
Antwort:
Nein. find() und remove() müssen nicht
implementiert werden. Wenn Sie die Schnittstelle der abstrakten Klasse
WordList implementieren, ist das ausreichend.
|
09.03.2006 |
FAQ |
Betrifft:
Übung 1 - WordList1 als
Erweiterung
von WordList0
Frage:
Auf dem Angabezettel steht "Implementieren Sie
WordList1 als Erweiterung von WordList0...". In der vorgegebenen Klasse
WordList1 steht public class WordList1 extends WordList ,
die Angabe
lässt allerdings eher auf public class WordList1
extends WordList0 schließen. Sollen wir die
Funktionen von
WordList0 nach WordList1
übernehmen und die restlichen Funktionen hinzufügen,
oder WordList0 per extend
verwenden?
Antwort:
Bei
dieser
Übung liegt der Schwerpunkt auf den Algorithmen
für die verkettete Liste, daher sind beide
Lösungen zulässig und gleichwertig:
- Sie können wie in der Vorgabe
WordList1
extends WordList lassen und wo notwendig Teile
der Implementierung aus WordList0 kopieren. Die dabei
entstehende Codedopplung ist in diesem
Fall akzeptabel.
- Sie können aber auch, wie in der Frage
angesprochen,
WordList1 extends WordList0
machen und die Implementierung erben. Achten Sie dabei auf korrekte
Sichtbarkeit bei den Feldern der Klasse.
|
|