Singly-linked list/Traversal: Difference between revisions
Content added Content deleted
(Added solution for Action!) |
|||
Line 1,971: | Line 1,971: | ||
=={{header|XPL0}}== |
=={{header|XPL0}}== |
||
<lang XPL0>repeat Node:= Node(0) until Node=0</lang> |
<lang XPL0>repeat Node:= Node(0) until Node=0</lang> |
||
=={{header|Yabasic}}== |
|||
<lang Yabasic>// Rosetta Code problem: http://rosettacode.org/wiki/Singly-linked_list/Element_insertion & removal & traverse |
|||
// by Galileo, 02/2022 |
|||
FIL = 1 : DATO = 2 : LINK = 3 |
|||
countNodes = 0 : Nodes = 10 |
|||
dim list(Nodes, 3) |
|||
sub searchNode(node) |
|||
local i, prevNode |
|||
for i = 1 to countNodes |
|||
if i = node break |
|||
prevNode = list(prevNode, LINK) |
|||
next |
|||
return prevNode |
|||
end sub |
|||
sub insertNode(node, newNode, after) |
|||
local prevNode, i |
|||
prevNode = searchNode(node) |
|||
if after prevNode = list(prevNode, LINK) |
|||
for i = 1 to Nodes |
|||
if not list(i, FIL) break |
|||
next |
|||
list(i, FIL) = true |
|||
list(i, DATO) = newNode |
|||
list(i, LINK) = list(prevNode, LINK) |
|||
list(prevNode, LINK) = i |
|||
countNodes = countNodes + 1 |
|||
if countNodes = Nodes then Nodes = Nodes + 10 : redim list(Nodes, 3) : end if |
|||
end sub |
|||
sub removeNode(n) |
|||
local prevNode, node |
|||
prevNode = searchNode(n) |
|||
node = list(prevNode, LINK) |
|||
list(prevNode, LINK) = list(node, LINK) |
|||
list(node, FIL) = false |
|||
countNodes = countNodes - 1 |
|||
end sub |
|||
sub printNode(node) |
|||
local prevNode |
|||
prevNode = searchNode(node) |
|||
node = list(prevNode, LINK) |
|||
print list(node, DATO); |
|||
print |
|||
end sub |
|||
sub traverseList() |
|||
local i, n |
|||
for i = 1 to countNodes |
|||
printNode(i) |
|||
next |
|||
end sub |
|||
insertNode(1, 1000, true) |
|||
insertNode(1, 2000, true) |
|||
insertNode(1, 3000, true) |
|||
traverseList() |
|||
removeNode(2) |
|||
print |
|||
traverseList() |
|||
</lang> |
|||
{{out}} |
|||
<pre>1000 |
|||
3000 |
|||
2000 |
|||
1000 |
|||
2000 |
|||
---Program done, press RETURN---</pre> |
|||
=={{header|zkl}}== |
=={{header|zkl}}== |