Code: Links in Listen rumschieben

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

DivineDominion

Betreff: Code: Links in Listen rumschieben

BeitragSo, Jan 16, 2005 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Weiß net obs ins Archiv sollte...

Jedenfalls habe ich mir was geschrieben um Einträge in Listen umherzuschieben, weil ich da nix passendes fand und remove und addlast mir zu doof waren - obwohls wohl leichter wäre, aber am Ende ist es mit der suche nach dem value in TLink zu lahm oder sowas...

Jedenfalls funktioniert das ganz nett 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 )

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(  )
   
   If hLink = hFirst Then Return

   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 = hList.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 Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group