1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| def duplicate_link(s, val): """Mutates s so that each element equal to val is followed by another val.
>>> x = Link(5, Link(4, Link(5))) >>> duplicate_link(x, 5) >>> x Link(5, Link(5, Link(4, Link(5, Link(5))))) >>> y = Link(2, Link(4, Link(6, Link(8)))) >>> duplicate_link(y, 10) >>> y Link(2, Link(4, Link(6, Link(8)))) >>> z = Link(1, Link(2, (Link(2, Link(3))))) >>> duplicate_link(z, 2) # ensures that back to back links with val are both duplicated >>> z Link(1, Link(2, Link(2, Link(2, Link(2, Link(3)))))) """ "*** YOUR CODE HERE ***" if s is Link.empty: return s if s.first == val: new_s = Link(val) duplicate_link(s.rest, val) new_s.rest, s.rest = s.rest, new_s else: duplicate_link(s.rest, val) return None
|