Lineare Liste für BB
Übersicht![](/themes/Standard/arrow.png)
![](/themes/Standard/arrow.png)
![]() |
ToeBBetreff: Lineare Liste für BB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiß, in BlitzBasic ist es eigl. Unnötig lineare Listen zu schreiben, und vor allem ziemlich umständlich und man muss ein wenig tricksen. Aber dennoch kann man vor allem bei GUI's damit einen ziemlichen Geschwindigkeitsvorteil erlangen (Bis zu 20x Schneller)! Denn mit der Lib unten kann man wie im Beispiel zu sehen ist einfach die Gadgets in einer solchen Liste abspeichern und muss nicht immer alle durchlaufen um die zu finden, welche zu dem Fenster gehören. Das ganze bietet schon kleine Funktionen für Liste erstellen, Link ans Ende hinzufügen, Link an den Anfang hinzufügen, Link löschen, Liste zählen und mittels der ID entweder den Link oder nur den Wert des links abfragen.
Hier erstmal die Lib: BlitzBasic: [AUSKLAPPEN] Type TList Und hier das GUI beispiel: BlitzBasic: [AUSKLAPPEN] Include "LinkedList.bb" DrawParents2 ist hierbei übrigens die am häufigsten benutze Variante, die langsamste. Ich hoffe das kann irgendwer gebrauchen ! Lg, Tobias |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
KnorxThieus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das versteh ich nicht.
Geschwindigkeitsvorteil klingt zwar gut, aber was macht dein Programm da? MfgG |
||
Version: BlitzPlus / Blitz+ |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also..
Normal wird ja Blitz intern jedes neue Object eines Types in einer Liste gespeichert sodass man in einer For..Each schleife ALLE abfragen kann. Das Problem hierbei ist bei einer Gui, dass man wenn man Buttons bspw. auf ein Fenster legen möchte, und diesen Button dann auf ein Fenster malen will, man alle Buttons durchgehen muss um zu prüfen welcher jetzt auf dem Fenster liegen soll (Siehe Funktion DrawParents2). Das kann aber bei sehr vielen Fenstern und vielen Buttons sehr langsam werden. Meine Lineare Liste ist praktisch eine selber geschriebene Liste für Types (Da man hierbei auch nur das Handle abspeichert, kann man auch mehrere Types in eine Liste schreiben, bspw. Buttons, Textfelder usw.). Der Vorteil ist hierbei, dass das Fenster eine Liste der Gadgets hat, welche darauf angezeigt werden sollen und muss dann auch nur diese durchgehen. Speicherschonend wäre natürlich, dem fenster jeweils einen Zeiger auf einen Start-Gadget zu geben und in dem Gadget selber dann immer das jeweils nächste zu speichern: BlitzBasic: [AUSKLAPPEN] Type Window Und somit kann man dann alle Buttons auf dem fenster so abfragen: BlitzBasic: [AUSKLAPPEN] start = window.button Aber das wäre vom code her ein wenig unübersichtlich.. Lg, Tobias |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was du da übrigens ansprichst nennt sich "Linked List" oder auf Deutsch "doppelt verknüpfte Liste", den Begriff "lineare Liste" habe ich noch nie gehört, und scheint auch nicht häufig zu sein. | ||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja du hast schon Recht, normalerweise nennt sich das LinkedList. Lineare Listen wären dann Listen, welche direkt in der Klasse (Oder in Pascal im Record) selbst gehandelt werden, und es immer nur ein Nachfolger gespeichert wird, nie der Vorgänger. Deswegen auch Linear ![]() Lg, Tobias |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da muss ich widersprechen:
Eine Linked List ist das was Du bescheibst, Toeb- eine Liste die nur je den nächsten Link kennt. Eine doppelt verkettete Liste wie Du sie hier implementiert hast nennt sich doubly linked list. Wir hatten es vorhin schon im Chat wegen der Bezeichnungen, war ein interessantes Gespräch. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab mal gegoogled und dabei den Artikel unter dem Namen "Lineare Listen ..." Gefunden. Dort wird das gleich Prinzip erklärt:
http://www.tu-chemnitz.de/wirt.../lists.htm http://www.leda-tutorial.org/d...02s03.html Anscheinend gibt es nur vom Begriff her einen Unterschied, gemeint ist wohl das gleiche .. Lg, Tobias |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
KnorxThieus |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ToeB: Achso, für GUI...
Und mit Types kenne ich mich leider überhaupt noch nicht aus ![]() mfg |
||
Version: BlitzPlus / Blitz+ |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Toeb, danke für die Links. Klar, wenn man unterscheiden will zwischen linearer Struktur und einem verzweigenden Container wie einem Baum macht das Sinn, allerdings glaube ich dass der Begriff Liste als solches Ja schon die Linearität beinhaltet. Aber das ist Haarespalterei ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht
![](/themes/Standard/arrow.png)
![](/themes/Standard/arrow.png)
Powered by phpBB © 2001 - 2006, phpBB Group