linked list - QuickSort on a LinkedList in VBA -


i've unfortunately inherited vba code uses linkedlists in vba nothing sorted, , needs sorted.

linkedlist example: http://support.microsoft.com/kb/166394

i'm trying quicksort on items translating following code linkedlist: vba array sort function?

but i'm having hard time following logic of function determine how translate non-numbered system linked list.

could comment code explain happening, or possibly in translation?

first, need linked list object. use array example. let's take 5 nodes simplicity of example.

'declaration of array dim linkedlist(0 4) node 

now, time fill array. variable head head of our linkedlist :

dim integer = 0  dim currentnode node set currentnode = head.pnext  while not currentnode.pnext currentnode 'walk rest of list end     linkedlist(i) = currentnode     = + 1     set currentnode = currentnode.pnext      'current pointer next node wend 

our linkedlist filled, can use quicksort. launch initial call line :

quicksort linkedlist, lbound(linkedlist), ubound(linkedlist) 

and adapt little function :

public sub quicksort(varray node, inlow long, inhi long)    dim pivot   integer   dim tmpswap integer   dim tmplow  long   dim tmphi   long    tmplow = inlow   tmphi = inhi    pivot = varray((inlow + inhi) \ 2).key    while (tmplow <= tmphi)       while (varray(tmplow).key < pivot , tmplow < inhi)         tmplow = tmplow + 1      wend       while (pivot < varray(tmphi).key , tmphi > inlow)         tmphi = tmphi - 1      wend       if (tmplow <= tmphi)         tmpswap = varray(tmplow).key         varray(tmplow).key = varray(tmphi).key         varray(tmphi).key = tmpswap         tmplow = tmplow + 1         tmphi = tmphi - 1      end if    wend    if (inlow < tmphi) quicksort varray, inlow, tmphi   if (tmplow < inhi) quicksort varray, tmplow, inhi  end sub 

i think it's good. tell me if there problem or misunderstanding.


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -