Doubly-linked list/Traversal: Difference between revisions

Content added Content deleted
(→‎{{header|Axe}}: Use different values on the links)
Line 1,072: Line 1,072:
5
5
100
100
</pre>

=={{header|Oforth}}==

Complete definition is here : [[../Definition#Oforth]]

Defining #forEachNext and #forEachPrev allow to traverse this double linked list using #forEach: and #revEach: syntax

<lang oforth>DList method: forEachNext
{
dup ifNull: [ drop @head ifNull: [ false ] else: [ @head @head true] return ]
next dup ifNull: [ drop false ] else: [ dup true ]
}

DList method: forEachPrev
{
dup ifNull: [ drop @tail ifNull: [ false ] else: [ @tail @tail true] return ]
prev dup ifNull: [ drop false ] else: [ dup true ]
}

: test
{
| dl n |
DList new ->dl
dl insertFront("A")
dl insertBack("B")
dl head insertAfter(DNode new("C", null , null))

"Traversal (beginning to end) : " println
dl forEach: n [ n . ]

"\nTraversal (end to beginning) : " println
dl revEach: n [ n . ]

}</lang>

{{out}}
<pre>
>test
Traversal (beginning to end) :
A C B
Traversal (end to beginning) :
B C A ok
</pre>
</pre>