Skew Binary List

Operations
(a0,a1,,an1)(a_0, a_1, \dots, a_{n-1}).
new()\mathtt{new}()
list
Θ(1)\Theta(1)
is_empty()\mathtt{is\_empty}()
list
Θ(1)\Theta(1)
cons(x)\mathtt{cons}(x)
xx
Θ(1)\Theta(1)
head()\mathtt{head}()
a0a_0
Θ(1)\Theta(1)
tail()\mathtt{tail}()
a0a_0
Θ(1)\Theta(1)
lookup(i)\mathtt{lookup}(i)
aia_i
Θ(logi)\Theta(\log i)
update(i,x)\mathtt{update}(i,x)
aia_ixx
Θ(logi)\Theta(\log i)

Summary
list array
kk2k12^k-10,1,20,1,2
2200
11
cons,tail\mathtt{cons}, \mathtt{tail}
2k12^k-1 list
path copying


n=12n=12cons\mathtt{cons}
112112120120
11

References

Notes
drop(i)\mathtt{drop}(i)
ii list
O(logn)\Omicron(\log n)O(logn)\Omicron(\log n)
extend(i,x)\mathtt{extend}(i,x)
iixx list
O(log(n+i))\Omicron(\log (n+i))O(log(n+i))\Omicron(\log (n+i))

Implementations