Doubly-linked list/Definition: Difference between revisions

+ AutoHotkey
(add Ruby)
(+ AutoHotkey)
Line 135:
Empty from tail: saw I cat a it Was
</pre>
=={{header|AutoHotkey}}==
<lang AutoHotkey>a_prev = 0
a = 1
a_next = b
b_prev = a
b = 2
b_next = 0
c = 4
d = 5
insert_head("c", "a")
insert_tail("e", "b")
insert_between("d", "a", "b")
ListVars
msgbox % "tail= " . tail := traverse("c")
msgbox % "head= " . head := traverse("d", "reverse")
return
 
insert_head(new, head)
{
local temp
%head%_prev := new
%new%_prev := 0
%new%_next := head
}
 
insert_tail(new, tail)
{
local temp
%prev%_next := new
%new%_prev := prev
%new%_next := 0
}
 
insert_between(new, prev, next)
{
local temp
%prev%_next := new
%new%_prev := prev
%new%_next := next
%next%_prev := new
}
 
traverse(element, direction="forward")
{
if (direction = "forward")
direction = _next
if (direction = "reverse")
direction = _prev
 
name := element
MsgBox % element . "= " . %element%
name := element . direction
while, %name%
{
element := %name%
msgbox % %name% . "= " . %element%
oldname := name
name := %name% . direction
if (%oldname% == %name%)
goto circular
}
return (%oldname%)
circular:
msgbox % "error: list is circular: " . name . oldname . %name% . %oldname%
}</lang>
=={{header|C}}==
 
Anonymous user