Doubly-linked list/Traversal: Difference between revisions
Content added Content deleted
m (→{{header|PL/I}}: Fixed typo (teh → the)) |
(Added solution for F# using std lib LinkedList) |
||
Line 599: | Line 599: | ||
=={{header|Fortran}}== |
=={{header|Fortran}}== |
||
see [[Doubly-linked list/Definition#Fortran]] |
see [[Doubly-linked list/Definition#Fortran]] |
||
=={{header|F#}}== |
|||
<lang fsharp> |
|||
open System.Collections.Generic |
|||
let first (l: LinkedList<char>) = l.First |
|||
let last (l: LinkedList<char>) = l.Last |
|||
let next (l: LinkedListNode<char>) = l.Next |
|||
let prev (l: LinkedListNode<char>) = l.Previous |
|||
let traverse g f (ls: LinkedList<char>) = |
|||
let rec traverse (l: LinkedListNode<char>) = |
|||
match l with |
|||
| null -> () |
|||
| _ -> |
|||
printf "%A" l.Value |
|||
traverse (f l) |
|||
traverse (g ls) |
|||
let traverseForward = traverse first next |
|||
let traverseBackward = traverse last prev |
|||
let cs = LinkedList(['a'..'z']) |
|||
traverseForward cs |
|||
printfn "" |
|||
traverseBackward cs |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
'a''b''c''d''e''f''g''h''i''j''k''l''m''n''o''p''q''r''s''t''u''v''w''x''y''z' |
|||
'z''y''x''w''v''u''t''s''r''q''p''o''n''m''l''k''j''i''h''g''f''e''d''c''b''a' |
|||
</pre> |
|||
=={{header|Go}}== |
=={{header|Go}}== |