int main(void) { srand((unsigned)time(0)); int count = 20, i; printf("### Function Test ###\n"); printf("=== Init Skip List ===\n"); skiplist *sl = slCreate(); for (i = 0; i < count; ++i) { slInsert(sl, i); } printf("=== Print Skip List ===\n"); slPrint(sl); printf("=== Search Skip List ===\n"); for (i = 0; i < count; ++i) { int value = rand() % (count + 10); slSearch(sl, value); } printf("=== Delete Skip List ===\n"); for (i = 0; i < count + 10; i += 2) { printf("Delete[%d]: %s\n", i, slDelete(sl, i) ? "SUCCESS" : "NOT FOUND"); } slPrint(sl); slFree(sl); sl = NULL; return 0; }
static int _insert(lua_State *L) { skiplist *sl = _to_skiplist(L); double score = luaL_checknumber(L, 2); luaL_checktype(L, 3, LUA_TSTRING); size_t len; const char* ptr = lua_tolstring(L, 3, &len); slobj *obj = slCreateObj(ptr, len); slInsert(sl, score, obj); return 0; }