Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Datenstruktur » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 10 Beiträge
eulerscheZahl

Zitat:
currentEntry.getnext() Java ist case sensitive. ??
was bedeutet das ?

es heißt getNext, mit großem N.
Auch den Datentyp "Element" hast du nicht komplett ausgebessert.
Auch wenn ich mich wiederhole: teste das erst mit dem Compiler, ich will hier nicht immer auch solche Selbstverständlichkeiten hinweisen müssen.

Wenn man die Fehler behebt und mit oben von mit gegebenem Beispielcode testen will, erhält man eine NullPointerException.
Du nimmst einfach an, dass der es immer einen nächsten Eintrag gibt.
currentEntry.getNext().getElement() klappt nicht, wenn currentEntry.getNext() null liefert.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
public void add(E element) {
	if (this.head == null || element.compareTo(this.head.getElement()) < 0) {
		Entry<E> newHead = new Entry<E>(element, this.head);
		this.head = newHead;
	} else {
		Entry<E> current = this.head;
		while (current.getNext() != null
				&& current.getNext().getElement().compareTo(element) < 0) {
			current = current.getNext();
		}
		Entry<E> x = new Entry<E>(element, current.getNext());
		current.setNext(x);
	}
	this.size++;
}


Zur c)
wenn max >= dem letzten Eintrag in der sortierten Liste ist, hast du wieder eine NullPointerException verursacht.
neuling96

machen wir schrittweise die c)

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
public void slice(E min, E max) {
if(this.head == null) {
return;
}
Entry<E> currentEntry = this.head;
this.head = null;
this.size = 0;
while( currentEntry.getElement().compareTo(min) < 0) {
currentEntry = currentEntry.getNext();
}
if(currentEntry.getElement().compareTo(max) <= 0) {
this.head = currentEntry;
this.size++;
}
while( currentEntry.getNext().getElement().compareTo(max) <= 0) {
currentEntry = currentEntry.getNext();
this.size++;
}
currentEntry.setNext(null);
}
neuling96

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
public void add(E element) {
Entry<E> currentEntry = this.head;
if(currentEntry == null) {
this.head = new Entry<E>(element, null);
this.size++;
return;
}
while (currentEntry.getNext().getElement().compareTo(element) < 0){
currentEntry=currentEntry.getNext();
}
Entry<E> enter=new Element<E>(element, currentEntry.getnext()){
currentEntry.setnext(enter);
this.size++;
}

currentEntry.getnext() Java ist case sensitive. ??
was bedeutet das ?

ich habe eine frage hier zu

Entry<E> currentEntry = this.head;
this.head = null;


currentEntry zeigt auf this.head( hat eine Referenz die auf das Objekt zeigt)
und

wenn ich this.head=null; setzte

hat es doch auch Auswirkung auf currentEntry ??

heißt das jetzt currentEntry zeigt auch auf null??
eulerscheZahl

Element<E> enter - und was ist Element jetzt aus einmal für ein Datentyp?
while (currentEntry.getNext().getElement().compareTo(element) < 0)) warum gehen hier mehr Klammern zu als auf?
currentEntry.getnext() Java ist case sensitive.
neuling96

public void add(E element) {
Entry<E> currentEntry = this.head;
if(currentEntry == null) {
this.head = new Entry<E>(element, null);
this.size++;
return;
}
while (currentEntry.getNext().getElement().compareTo(element) < 0)){
currentEntry=currentEntry.getNext();
}
Element<E> enter=new Element<E>(element, currentEntry.getnext()){
currentEntry.setnext(enter);
this.size++;
}

[/code]
neuling96

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:

public void add(E element) {
Entry<E> currentEntry = this.head;
if(currentEntry == null) {
this.head = new Entry<E>(element, null);
this.size++;
return;
}
while (currentEntry.getNext().getElement().compareTo(element) < 0)){
x=x.getNext();
}
Element<E> enter=new Element<E>(element, x.getnext()){
x.setnext(enter);
this.size++;
}

neuling96

Wir haben es heute das Thema behandelt, aber viel verstanden habe ich nicht
ich versuch mal die
b)
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public void add(E element){
Entry<T> x= this.head;
while (x.compareto(element)<0){
x=x.getNext();
}
element.setnext(x);
x.setElement(o);
this.size++;
}

eulerscheZahl

"Wobei dir Eigenschaft der Sortierung erhalten bleiben soll"
Sagt dir der Begriff linked List bzw. verkettete Liste etwas? Das hast du hier nämlich vorliegen. Und in dieser Liste sind die Einträge sortiert.

code:
1:
2:
3:
4:
5:
6:
7:
SortierteListe<Integer> list = new SortierteListe<Integer>();
list.add(3);
list.add(5);
list.add(4);
list.add(3);
list.add(2);
System.out.println(list.printList()); //die Methode habe ich schnell selbst geschrieben, also bitte kein "das wird mir rot unterringelt"

liefert 2 3 3 4 5
neuling96

// du sollst es sortiert einfügen, nicht an die Spitze setzen
ich dachte, wenn ich ein element in einer liste einfüge, dann immer an der spitze?
an welcher sollte ich den einfügen?
neuling96

oh je, ich dachte wenn ich den code kopiere wird es passen unglücklich
ich hoffe das passt besser!
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
public int indexof(E element) {
		int i = 0;
		Entry<E> x = this.head;
while (i < this.size) {
			 
			if (x.getElement().equals(element)) {
				return i;
			} else {
				x = x.getNext(); 
											
				i++;
			}
		}
		return -1; 
	}

Es sind weitere Beiträge zu diesem Thema vorhanden. Klicken Sie hier, um sich alle Beiträge anzusehen.