Hi,
wie oben beschrieben habe ich Probleme mit den einfach verketteten Liste, evtl. könnte man mir hier helfen.
Meine Aufgabe ist es aus einer Liste von 49 Zahlen, 6 Zahlen zu ziehen. Jede der 6 zufälligen Zahlen darf nur 1x gezogen werden, da sie aus der Liste ausgekettet werden.
Vom Prinzip her habe ich es verstanden nur die Umsetzung fällt mir schwer.
- Einfach verkette Listen beginnen beim Head und enden bei null.
- Am Anfang verweisst head auf null.
- Um Knoten einzufügen musst man imemr die Liste durchlaufen.
- Um etwas auszuketten, braucht man einen Zwischenspeicher in welchem man den Knoten der nach der zu "löschenden"-Knoten kommt speichert, danach setzt verbindet man das gespeicherte Element mit dem Knoten vor dem "gelöschtem" und dann ist die Liste wieder durchgängig.
- Was löschen muss man in dem Sinne nicht, wenn man etwas auskettet reicht es schon, da der Garbage Collector sich dann darum kümmert.
Soweit so gut.
Habe mal meinen "Fortschritt" soweit ich kamm gepostet.
Beim schreiben sind mir aber Fragen aufgekommen :
Dieser abstrakter Datentyp LottoElement, dem habe ich ein Attribut ""nextListElement"" gegeben. Ein Int nimmt eine Stelle im Speicher ein nur für Zahlen, double auch doch etc.. die primitiven Datentypen nehmen immer ein festen Platz im Speicher ein .
Wie ist es bei abstrakten ? Zwischen primitiven Datentypen kann man ja umwandeln von double zu int etc.. mit (int) . Von dem DatenTyp LottoElement zu int geht ja nicht.
Jetzt wird die Liste mit den 49 Zahlen aus dem Datentyp LottoElement bestehen. Wie finde ich eine spezielle Zahl beim durchlaufen der Liste. Bei Arrays kann ich ja eine for-Schleife schreiben und mit dem int( etc..) Wert suchen ?
Jetzt gibt es zu den Listen immer das anschauliche Beispiel mit den Rechtecken die die Knoten symbolisieren. Einen head start und und null. Die Blöcke dazwischen sind die Knoten. Rechtecke in der Mitte geteilt. Die linke Seite verweisst auf seinen eigenen Knoten, die rechte auf die nächsten ggf. null.
Was ich nicht verstehe, wenn head und null immer außen vor sind. Fängt dann meine Liste statt mit 1,2,3 ; mit null,1,2 an? Oder verweißt die 1 auf head ?
--
Mein Ansatz wäre
Ich fühle mir gerade wie in dem Moment als Algebra drankamm und plötzlich Zahlen durch Buchstaben ersetzt worden sind. >.<
hilfreiche Antworten wären wirklich sehr nett, mir qualmt die Rübe.
mfG
wie oben beschrieben habe ich Probleme mit den einfach verketteten Liste, evtl. könnte man mir hier helfen.
Meine Aufgabe ist es aus einer Liste von 49 Zahlen, 6 Zahlen zu ziehen. Jede der 6 zufälligen Zahlen darf nur 1x gezogen werden, da sie aus der Liste ausgekettet werden.
Vom Prinzip her habe ich es verstanden nur die Umsetzung fällt mir schwer.
- Einfach verkette Listen beginnen beim Head und enden bei null.
- Am Anfang verweisst head auf null.
- Um Knoten einzufügen musst man imemr die Liste durchlaufen.
- Um etwas auszuketten, braucht man einen Zwischenspeicher in welchem man den Knoten der nach der zu "löschenden"-Knoten kommt speichert, danach setzt verbindet man das gespeicherte Element mit dem Knoten vor dem "gelöschtem" und dann ist die Liste wieder durchgängig.
- Was löschen muss man in dem Sinne nicht, wenn man etwas auskettet reicht es schon, da der Garbage Collector sich dann darum kümmert.
Soweit so gut.
Habe mal meinen "Fortschritt" soweit ich kamm gepostet.
Beim schreiben sind mir aber Fragen aufgekommen :
Dieser abstrakter Datentyp LottoElement, dem habe ich ein Attribut ""nextListElement"" gegeben. Ein Int nimmt eine Stelle im Speicher ein nur für Zahlen, double auch doch etc.. die primitiven Datentypen nehmen immer ein festen Platz im Speicher ein .
Wie ist es bei abstrakten ? Zwischen primitiven Datentypen kann man ja umwandeln von double zu int etc.. mit (int) . Von dem DatenTyp LottoElement zu int geht ja nicht.
Jetzt wird die Liste mit den 49 Zahlen aus dem Datentyp LottoElement bestehen. Wie finde ich eine spezielle Zahl beim durchlaufen der Liste. Bei Arrays kann ich ja eine for-Schleife schreiben und mit dem int( etc..) Wert suchen ?
Jetzt gibt es zu den Listen immer das anschauliche Beispiel mit den Rechtecken die die Knoten symbolisieren. Einen head start und und null. Die Blöcke dazwischen sind die Knoten. Rechtecke in der Mitte geteilt. Die linke Seite verweisst auf seinen eigenen Knoten, die rechte auf die nächsten ggf. null.
Was ich nicht verstehe, wenn head und null immer außen vor sind. Fängt dann meine Liste statt mit 1,2,3 ; mit null,1,2 an? Oder verweißt die 1 auf head ?
--
Mein Ansatz wäre
Ich fühle mir gerade wie in dem Moment als Algebra drankamm und plötzlich Zahlen durch Buchstaben ersetzt worden sind. >.<
hilfreiche Antworten wären wirklich sehr nett, mir qualmt die Rübe.
mfG
Code:
public class LottoElement {
int zahl;
LottoElement nextListElement;
public LottoElement(int zahl) {
nextListElement = null;
this.zahl = zahl;
}
// public void setNextListElement(LottoElement nextListElement) {
// this.nextListElement = nextListElement;
// }
public void setZahl(int zahl) {
this.zahl = zahl;
}
// public LottoElement getNextListElement() {
// return nextListElement;
// }
public int getZahl() {
return zahl;
}
}
public class LottoList {
private LottoElement head;
public LottoList() {
head = null;
}
public boolean isEmpty() {
return head == null;
}
public static void main (String []args) {
LottoList liste = new LottoList();
}
}