RosettaCodeData/Task/Doubly-linked-list-Element-insertion/PicoLisp/doubly-linked-list-element-insertion.l
2023-07-01 13:44:08 -04:00

12 lines
411 B
Text

# Insert an element X at position Pos
(de 2insert (X Pos DLst)
(let (Lst (nth (car DLst) (dec (* 2 Pos))) New (cons X (cadr Lst) Lst))
(if (cadr Lst)
(con (cdr @) New)
(set DLst New) )
(if (cdr Lst)
(set @ New)
(con DLst New) ) ) )
(setq *DL (2list 'A 'B)) # Build a two-element doubly-linked list
(2insert 'C 2 *DL) # Insert C at position 2