Bestimmte werte direkt aus einer linked list hohlen

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Freeman

Betreff: Bestimmte werte direkt aus einer linked list hohlen

BeitragFr, Aug 26, 2005 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

ich spiele zur zeit etwas mit den linked lists rum. wenn man alles auß einer liste ausgeben will dann sieht das ja so aus
Code: [AUSKLAPPEN]

for i=eachin list .......usw


aber wie kann ich nur einen bestimmten wert oder string aus einer Linked List heraushohlen?

Fr3eMaN
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28

maximilian

BeitragFr, Aug 26, 2005 17:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Iterieren und stoppen wenn du ihn gefunden hast.
Variety is the spice of life. One day ignore people, next day annoy them.
 

Dreamora

BeitragFr, Aug 26, 2005 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Wechsel auf objektoriertiert wenn du es noch nicht tust, dann gibt es:

a:TList
a.ValueAtIndex (i)


Aber als Warnung vorweg: Listen sind nicht dafür gedacht, dass man auf ein spezielles Objekt zugreifen muss. Denn selbst so muss die Liste soweit durchsuchen, bis es beim i-ten Element ist.

Benutz besser Arrays oder lass über die vorhandene Funktion die Liste in einen Array konvertieren. Kannst sie ja später wieder zurückkonvertieren von Array in eine Liste.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

rema

BeitragFr, Aug 26, 2005 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Wiso ist eine Liste nicht geeignet? Vom Speed her?

Sonst mache mal ein Beispiel mit Types die in einem Array verwaltet wird.
 

Dreamora

BeitragFr, Aug 26, 2005 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum: Weil wenn du Index i immer die Liste durchgehen muss von Element 0 bis i, da eine direkte ansteuerung nicht möglich ist.
Wenn du das ValueAtIndex nicht brauchst, dann ist es kein, denn wenn du mit EachIn durchgehst ist die Liste schnell genug, speziell wenn du immer wieder Daten hinzufügst und herausnimmst (und ganz speziell wenn du elemente mitten in der Liste löschen willst). Da wird dann der Array relativ schnell mal langsam.

Wenn du die Liste nur von Zeit zu Zeit brauchst und sonst hauptsächlich direkt mit einem Index arbeitest, gehts am einfachsten indem du die Liste auffüllst und dir dann einen Array daraus generieren lässt. Dafür gibts eine Funktion. Umgekehrt gibt es übrigens auch eine Funktion für Array to List
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

bruZard

BeitragFr, Aug 26, 2005 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich verwende Listen mit bis zu 100.000 Einträgen und es läuft alles schnell genug mit For ... EachIn ...

Manchmal glaube ich dass diese ganzen "Optimierer" nur zu dämlich sind den Rest Ihres Codes sauber zu programmieren und glauben dass ein Wechsel in der Technik was bewirkt.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image
 

Dreamora

BeitragFr, Aug 26, 2005 23:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei vielen schon ...
Deshalb sollte man ja eigentlich nicht optimieren, solange man noch daran gearbeitet wird.
Bei Eachin hast du recht, da kommt der unterschied nicht soo wirklich draufan.
Wenn man aber entweder vermehrt auf bestimmte Items zugreifen muss (Array oder Move to Front list) oder zwischen drin etwas löschen/einfangen muss (List), dann lohnt sich eine entsprechende Anpassung ziemlich schnell.

jedoch denke ich, fehlt mit wenigen Ausnahmen hier allen der nötige programmiertheoretische Hintergrund, als das sie sich überhaupt über so etwas Gedanken machen sollten ...
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group