Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
83
Task/Huffman-coding/PureBasic/huffman-coding.basic
Normal file
83
Task/Huffman-coding/PureBasic/huffman-coding.basic
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
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)\number<min1 Or min1=0
|
||||
min1=tree(i)\number
|
||||
hmin1=i
|
||||
ElseIf tree(i)\number<min2 Or min2=0
|
||||
min2=tree(i)\number
|
||||
hmin2=i
|
||||
EndIf
|
||||
EndIf
|
||||
Next
|
||||
|
||||
If min1=0 Or min2=0
|
||||
Break
|
||||
EndIf
|
||||
|
||||
dimsize+1
|
||||
ReDim tree(dimsize)
|
||||
tree(dimsize)\number=tree(hmin1)\number+tree(hmin2)\number
|
||||
tree(hmin1)\left=dimsize
|
||||
tree(hmin2)\right=dimsize
|
||||
tree(hmin1)\linked=1
|
||||
tree(hmin2)\linked=1
|
||||
ForEver
|
||||
|
||||
i=0
|
||||
While tree(i)\ischar=1
|
||||
str.s=""
|
||||
k=i
|
||||
ZNEXT:
|
||||
If tree(k)\left<>0
|
||||
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()
|
||||
Loading…
Add table
Add a link
Reference in a new issue