Singly-linked list/Element removal: Difference between revisions
Content added Content deleted
(Singly-linked list/Element removal in FreeBASIC) |
|||
Line 514: | Line 514: | ||
</lang> |
</lang> |
||
No label, no nasty literal GO TO - even though an "END DO" hides one. |
No label, no nasty literal GO TO - even though an "END DO" hides one. |
||
=={{header|FreeBASIC}}== |
|||
{{trans|Yabasic}} |
|||
<lang freebasic>#define FIL 1 |
|||
#define DATO 2 |
|||
#define LINK 3 |
|||
Dim Shared As Integer countNodes, Nodes |
|||
countNodes = 0 : Nodes = 10 |
|||
Dim Shared As Integer list(Nodes, 3) |
|||
Function searchNode(node As Integer) As Integer |
|||
Dim As Integer i, prevNode |
|||
For i = 1 To countNodes |
|||
If i = node Then Exit For 'break |
|||
prevNode = list(prevNode, LINK) |
|||
Next i |
|||
Return prevNode |
|||
End Function |
|||
Sub insertNode(node As Integer, newNode As Integer, after As Integer) |
|||
Dim As Integer i, prevNode |
|||
prevNode = searchNode(node) |
|||
If after Then prevNode = list(prevNode, LINK) |
|||
For i = 1 To Nodes |
|||
If Not list(i, FIL) Then Exit For |
|||
Next i |
|||
list(i, FIL) = true |
|||
list(i, DATO) = newNode |
|||
list(i, LINK) = list(prevNode, LINK) |
|||
list(prevNode, LINK) = i |
|||
countNodes += 1 |
|||
If countNodes = Nodes Then Nodes += 10 : Redim list(Nodes, 3) |
|||
End Sub |
|||
Sub removeNode(n As Integer) |
|||
Dim As Integer prevNode = searchNode(n) |
|||
Dim As Integer node = list(prevNode, LINK) |
|||
list(prevNode, LINK) = list(node, LINK) |
|||
list(node, FIL) = false |
|||
countNodes -= 1 |
|||
End Sub |
|||
Sub printNode(node As Integer) |
|||
Dim As Integer prevNode = searchNode(node) |
|||
node = list(prevNode, LINK) |
|||
Print list(node, DATO); |
|||
Print |
|||
End Sub |
|||
insertNode(1, 1000, true) |
|||
insertNode(1, 2000, true) |
|||
insertNode(1, 3000, true) |
|||
printNode(1) |
|||
printNode(2) |
|||
printNode(3) |
|||
removeNode(2) |
|||
Print |
|||
printNode(1) |
|||
printNode(2)</lang> |
|||
{{out}} |
|||
<pre>1000 |
|||
3000 |
|||
2000 |
|||
1000 |
|||
2000</pre> |
|||
=={{header|Go}}== |
=={{header|Go}}== |