Doubly-linked list/Element insertion: Difference between revisions

Content added Content deleted
Line 685: Line 685:
{{out}}
{{out}}
<pre>A C B</pre>
<pre>A C B</pre>

=={{header|Phix}}==
See also [[Doubly-linked_list/Traversal#Phix|Doubly-linked_list/Traversal]].
<lang Phix>enum NEXT,PREV,DATA
constant empty_dll = {{1,1}}
sequence dll = empty_dll

procedure insert_after(object data, integer pos=1)
integer prv = dll[pos][PREV]
dll = append(dll,{pos,prv,data})
if prv!=0 then
dll[prv][NEXT] = length(dll)
end if
dll[pos][PREV] = length(dll)
end procedure

insert_after("ONE")
insert_after("TWO")
insert_after("THREE")

?dll</lang>
{{out}}
<pre>
{{2,4},{3,1,"ONE"},{4,2,"TWO"},{1,3,"THREE"}}
</pre>


=={{header|PicoLisp}}==
=={{header|PicoLisp}}==