@@ -21,11 +21,6 @@ cdef double Log2(double x):
21
21
# TODO: optimize this, make less messy
22
22
23
23
cdef class Node:
24
- # cdef public:
25
- # double value
26
- # list next
27
- # list width
28
-
29
24
def __init__ (self , double value , list next , list width ):
30
25
self .value = value
31
26
self .next = next
@@ -41,9 +36,6 @@ cdef class IndexableSkiplist:
41
36
Sorted collection supporting O(lg n) insertion, removal, and
42
37
lookup by rank.
43
38
"""
44
- # cdef:
45
- # Py_ssize_t size, maxlevels
46
- # Node head
47
39
48
40
def __init__ (self , expected_size = 100 ):
49
41
self .size = 0
@@ -57,8 +49,9 @@ cdef class IndexableSkiplist:
57
49
return self .get(i)
58
50
59
51
cpdef get(self , Py_ssize_t i):
60
- cdef Py_ssize_t level
61
- cdef Node node
52
+ cdef:
53
+ Py_ssize_t level
54
+ Node node
62
55
63
56
node = self .head
64
57
i += 1
@@ -71,9 +64,10 @@ cdef class IndexableSkiplist:
71
64
return node.value
72
65
73
66
cpdef insert(self , double value):
74
- cdef Py_ssize_t level, steps, d
75
- cdef Node node, prevnode, newnode, next_at_level, tmp
76
- cdef list chain, steps_at_level
67
+ cdef:
68
+ Py_ssize_t level, steps, d
69
+ Node node, prevnode, newnode, next_at_level, tmp
70
+ list chain, steps_at_level
77
71
78
72
# find first node on each level where node.next[levels].value > value
79
73
chain = [None ] * self .maxlevels
@@ -110,9 +104,10 @@ cdef class IndexableSkiplist:
110
104
self .size += 1
111
105
112
106
cpdef remove(self , double value):
113
- cdef Py_ssize_t level, d
114
- cdef Node node, prevnode, tmpnode, next_at_level
115
- cdef list chain
107
+ cdef:
108
+ Py_ssize_t level, d
109
+ Node node, prevnode, tmpnode, next_at_level
110
+ list chain
116
111
117
112
# find first node on each level where node.next[levels].value >= value
118
113
chain = [None ] * self .maxlevels
0 commit comments