TLink in Liste verschieben

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

DivineDominion

Betreff: TLink in Liste verschieben

BeitragMi, Mai 18, 2005 16:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Könte wetten, es bereits ein mal gepostet zu haben vor alnger Zeit...

Verschiebt jedenfalls Einträge in der Liste hoch und runter.
Am schnellsten geht sowas bei vielen Sachen in nem spiel wohl, wenn man von jedem Objekt den TLink, der bei TList.addLast() zurückgegeben wird, speichert. Sonst eben nach dem TLink suchen, indem man die Liste nach einem Objekt suchen lässt. Ist dann aber langsamer und so Smile

Code: [AUSKLAPPEN]
Strict

Global liste:TList = New TList


Global link:TLink = liste.AddLast("1")
liste.AddLast("2")
liste.AddLast("3")
liste.AddLast("4")
liste.AddLast("5")

show( liste )
moveDown( link, liste )
show( liste )
moveUp( link, liste )
show( liste )
movetoEnd( link, liste )
show( liste )
movetoStart( link, liste )
show( liste )
movetoend( link, liste )
show( liste )

Function moveDown( hLink:TLink, hList:TList )
   
   Local hPred:TLink = hLink._pred
   Local hSucc:TLink = hLink._succ
   
   hPred._succ = hSucc
   hSucc._pred = hPred
   
   hLink._succ = hSucc._succ
   hLink._pred = hSucc
   
   hSucc._succ._pred = hLink
   hSucc._succ = hLink
   
EndFunction

Function moveup( hLink:TLink, hList:TList )
   
   Local hPred:TLink = hLink._pred
   Local hSucc:TLink = hLink._succ
   
   hPred._succ = hSucc
   hSucc._pred = hPred
   
   hLink._pred = hPred._pred
   hLink._succ = hPred
   
   hPred._pred._succ = hLink
   hPred._pred = hLink
      
EndFunction

Function moveToStart( hLink:TLink, hList:TList )
   
   Local hFirst:TLink = hList.FirsTLink(  )
   
   hLink._succ._pred = hLink._pred
   hLink._pred._succ = hLink._succ
   
   hFirst._pred._succ = hLink
   hLink._pred = hFirst._pred
   hLink._succ = hFirst
   hFirst._pred = hLink
   
EndFunction
   
Function moveToEnd( hLink:TLink, hList:TList )
   
   Local hLast:TLink = liste.LastLink()
   
   If hLink = hLast Then Return
   
   hLink._succ._pred = hLink._pred
   hLink._pred._succ = hLink._succ
   
   hLast._succ._pred = hLink
   hLink._succ = hLast._succ
   hLast._succ = hLink
   hLink._pred = hLast

EndFunction
   
Function show( hList:TList )

   For Local t:String = EachIn hList
      Print t
   Next   
   Print "-------------"

EndFunction
christian.tietze@gmail.com - https://christiantietze.de
macOS

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group