fb:porticula NoPaste
Summen gerader/ungerader Elemente einer Linked List (rekursiv)
Uploader: | St_W |
Datum/Zeit: | 16.05.2012 21:56:23 |
'Gesucht ist die Summe aller Elemente an geraden/ungeraden Positionen. Verwenden
'Sie dafur zwei indirekt rekursive Algorithmen, von denen einer die Elemente an geraden
'und der andere die an den ungeraden Positionen aufsummiert.
'
'Schnittstelle:
' int sumEven(Node n)
' int sumOdd(Node n)
' // n ist der erste Knoten der Liste
Type listt
n As listt ptr
v As Integer
End Type
Declare Function odd(n As listt Ptr) As Integer
Declare Function even(n As listt Ptr) As Integer
Dim As listt a1, a2, a3, a4, a5, a6, a7
a1.n = @a2
a2.n = @a3
a3.n = @a4
a4.n = @a5
a5.n = @a6
a6.n = @a7
a7.n = 0
a1.v = 3
a2.v = 5
a3.v = 2
a4.v = 7
a5.v = 5
a6.v = 1
a7.v = 4
Function even(n As listt Ptr) As Integer
If (n->n = 0) Then Return 0
Return odd(n->n)
End Function
Function odd(n As listt Ptr) As Integer
If (n->n = 0) Then Return n->v
Return n->v + even(n->n)
End Function
Print odd(@a1)
Print even(@a1)
Sleep