コード例 #1
0
ファイル: skiplist.c プロジェクト: jackliu8722/nessDB
/* seek to first */
void skiplist_iter_seektofirst(struct skiplist_iter *iter)
{
    struct skipnode *n;

    n = _get_next(iter->list->header, 0);
    iter->node = n;
}
コード例 #2
0
ファイル: skiplist.c プロジェクト: jackliu8722/nessDB
/* next */
void skiplist_iter_next(struct skiplist_iter *iter)
{
    struct skipnode *n;

    nassert(skiplist_iter_valid(iter));

    n = _get_next(iter->node, 0);
    iter->node = n;
}
コード例 #3
0
ファイル: L028_ImplementStrStr.c プロジェクト: zxwtry/OJ
int strStr_kmp(char* s, char* p) {
    int sn = strlen(s), pn = strlen(p);
    int * next = _get_next(p, pn);
    int si = 0, pi = 0;
    //print_array(next, pn + 1);
    for (si = 0; si <= sn - pn; si ++) {
        while (pi < pn && *(s + si + pi) == *(p + pi)) pi ++;
        if (pi == pn) {
            free(next);
            return si;
        }
        pi = next[pi];
    }
    free(next);
    return -1;
}
コード例 #4
0
ファイル: evtimer.c プロジェクト: A-Paul/RIOT
static void _evtimer_handler(void *arg)
{
    DEBUG("_evtimer_handler()\n");

    evtimer_t *evtimer = (evtimer_t *)arg;

    /* this function gets called directly by xtimer if the set xtimer expired.
     * Thus the offset of the first event is down to zero. */
    evtimer_event_t *event = evtimer->events;
    event->offset = 0;

    /* iterate the event list */
    while ((event = _get_next(evtimer))) {
        evtimer->callback(event);
    }

    _update_timer(evtimer);
}
コード例 #5
0
ファイル: skiplist.c プロジェクト: jackliu8722/nessDB
struct skipnode *skiplist_find_less_than(struct skiplist *sl, void *key)
{
    int height;
    struct skipnode *x;

    height = _get_height(sl) - 1;
    x = sl->header;
    while (1) {
        struct skipnode *next = _get_next(x, height);;

        if (next == NULL || sl->compare_cb(next->key, key) >= 0) {
            if (height == 0)
                return x;
            else
                height--;
        } else {
            x = next;
        }
    }
}
コード例 #6
0
ファイル: skiplist.c プロジェクト: jackliu8722/nessDB
struct skipnode *skiplist_find_last(struct skiplist *sl)
{
    int level;
    struct skipnode *x;

    x = sl->header;
    level = _get_height(sl) - 1;
    while (1) {
        struct skipnode *next;

        next = _get_next(x, level);
        if (next == NULL) {
            if (level == 0)
                return x;
            else
                level--;
        } else {
            x = next;
        }
    }
}