- or download this
use constant U => ....;
sub init {@A = (0) x U}
...
sub delete {$A [shift] = 0}
sub query {$A [shift]}
sub clear {@A = (0) x U}
- or download this
A B
...
0 | 2 | | 4 |
+------+ +------+
- or download this
int query (int i) {0 <= A [i] && A [i] < C && B [A [i]] == i}
void insert (int i) {if (!query (i)) {B [C] = i; A [i] = C; C ++}}
...
B [A [ i]] = B [C - 1];
A [B [ C - 1]] = A [i];
C --}}