Sorting algorithms/Tree sort on a linked list: Difference between revisions

Sorting algorithms/Tree sort on a linked list in FreeBASIC
(Sorting algorithms/Tree sort on a linked list in FreeBASIC)
Line 135:
after sort: [4, 5, 11, 13, 18, 20, 21, 32, 33, 47, 48, 49, 57, 76, 81, 98]
</pre>
 
=={{header|FreeBASIC}}==
{{trans|Yabasic}}
<lang freebasic>#define key 0
#define izda 1
#define dcha 2
 
Dim Shared As Integer index, size
index = 0 : size = 10
 
Dim Shared As String tree(size)
Dim Shared As Integer indTree(size, 3)
 
Declare Sub insertNode(word As String, prev As Integer)
Declare Sub makeNode(prev As Integer, branch As Integer, word As String)
 
Function Token(Texto As String, Delim As String, Direcc As Byte = 0) As String
Dim As Integer LocA = Instr(Texto, Delim)
Return Iif(Direcc <= 0, Left(Texto, LocA), Right(Texto, Len(Texto) - LocA))
End Function
 
Sub makeNode(prev As Integer, branch As Integer, word As String)
If indTree(prev, branch) = 0 Then
index += 1
If index > size Then size += 10 : Redim tree(size) : Redim indTree(size, 3)
indTree(prev, branch) = index
tree(index) = word
indTree(index, key) = 1
Else
insertNode(word, indTree(prev, branch))
End If
End Sub
 
Sub insertNode(word As String, prev As Integer)
Dim As String pal, ant
pal = Lcase(word)
ant = Lcase(tree(prev))
If ant <> "" Then
If pal < ant Then
makeNode(prev, izda, word)
Elseif pal > ant Then
makeNode(prev, dcha, word)
Elseif pal = ant Then
indTree(prev, key) += 1
End If
Else
index += 1
tree(index) = word
indTree(index, key) = 1
End If
End Sub
 
Sub showTree(numreg As Integer)
If indTree(numreg, izda) Then showTree(indTree(numreg, izda))
Print tree(numreg); " ";
If indTree(numreg, dcha) Then showTree(indTree(numreg, dcha))
End Sub
 
Sub makeTree(texto() As String)
For n As Integer = 1 To Ubound(texto)
insertNode(texto(n), 1)
Next n
End Sub
 
Dim As String g(1 To 10) = {"one","two","three","four","five","six","seven","eight","nine","ten"}
makeTree(g())
showTree(1)
Print
Sleep</lang>
{{out}}
<pre>eight five four nine one seven six ten three two</pre>
 
=={{header|Go}}==
2,169

edits