RosettaCodeData/Task/Singly-linked-list-Element-insertion/Racket/singly-linked-list-element-insertion.rkt

12 lines
352 B
Racket
Raw Permalink Normal View History

2013-06-05 21:47:54 +00:00
#lang racket
;; insert b after a in a mutable list (assumes that a is in the input list)
(define (insert-after! list a b)
(if (equal? (mcar list) a)
(set-mcdr! list (mcons b (mcdr list)))
(insert-after! (mcdr list) a b)))
(define l (mcons 1 (mcons 2 (mcons 3 '()))))
(insert-after! l 2 2.5)
l ; -> (mcons 1 (mcons 2 (mcons 2.5 (mcons 3))))