Exemplo n.º 1
0
size_t skiplist_free(struct skiplist *sl,
        skiplist_free_cb *cb, void *udata) {
    assert(sl);
    size_t ct = skiplist_clear(sl, cb, udata);
    node_free(sl, sl->head);
    sl->alloc(sl, sizeof(*sl), 0, sl->alloc_udata);
    return ct;
}
Exemplo n.º 2
0
size_t
skiplist_free(skiplist* list)
{
    ASSERT(list != NULL);

    size_t count = skiplist_clear(list);
    FREE(list->head);
    FREE(list);
    return count;
}
Exemplo n.º 3
0
void
case_skiplist_base()
{
    struct skiplist *skiplist = skiplist(NULL);
    assert(skiplist != NULL);
    assert(skiplist->len == 0);
    assert(skiplist->head != NULL);
    assert(skiplist->tail == skiplist->head);
    assert(skiplist->level == 1);
    assert(skiplist_push(skiplist, 2, NULL) == SKIPLIST_OK);
    assert(skiplist_push(skiplist, 1, NULL) == SKIPLIST_OK);
    assert(skiplist_push(skiplist, 3, NULL) == SKIPLIST_OK);
    assert(skiplist_len(skiplist) == 3);
    assert(skiplist_level(skiplist) <= SKIPLIST_LEVEL_MAX);
    assert(skiplist->tail->score == 3);
    skiplist_clear(skiplist);
    assert(skiplist_level(skiplist) == 1);
    assert(skiplist_len(skiplist) == 0);
    assert(skiplist->head != NULL);
    assert(skiplist->tail == skiplist->head);
    skiplist_free(skiplist);
}