RosettaCodeData/Task/Doubly-linked-list-Element-insertion/Oz/doubly-linked-list-element-insertion.oz
Ingy döt Net d066446780 langs a-z
2013-04-10 22:43:41 -07:00

25 lines
492 B
Text

declare
fun {CreateNewNode Value}
node(prev:{NewCell nil}
next:{NewCell nil}
value:Value)
end
proc {InsertAfter Node NewNode}
Next = Node.next
in
(NewNode.next) := @Next
(NewNode.prev) := Node
case @Next of nil then skip
[] node(prev:NextPrev ...) then
NextPrev := NewNode
end
Next := NewNode
end
A = {CreateNewNode a}
B = {CreateNewNode b}
C = {CreateNewNode c}
in
{InsertAfter A B}
{InsertAfter A C}