OpenConsole() SampleString.s="this is an example for huffman encoding" datalen=Len(SampleString) Structure ztree linked.c ischar.c char.c number.l left.l right.l EndStructure Dim memc.c(datalen) CopyMemory(@SampleString, @memc(0), datalen * SizeOf(Character)) Dim tree.ztree(255) For i=0 To datalen-1 tree(memc(i))\char=memc(i) tree(memc(i))\number+1 tree(memc(i))\ischar=1 Next SortStructuredArray(tree(),#PB_Sort_Descending,OffsetOf(ztree\number),#PB_Integer) For i=0 To 255 If tree(i)\number=0 ReDim tree(i-1) Break EndIf Next dimsize=ArraySize(tree()) Repeat min1.l=0 min2.l=0 For i=0 To dimsize If tree(i)\linked=0 If tree(i)\number0 str="0"+str k=tree(k)\left Goto ZNEXT ElseIf tree(k)\right<>0 str="1"+str k=tree(k)\right Goto ZNEXT EndIf PrintN(Chr(tree(i)\char)+" "+str) i+1 Wend Input() CloseConsole()