- printf("%s%p:0x%llx (%d", is_marked ? "*" : "", item, item->key, item->top_level);
- for (int i = 1; i <= item->top_level; ++i) {
- node_t *next = (node_t *)STRIP_TAG(item->next[i]);
- printf(" %p:0x%llx", item->next[i], next ? next->key : 0);
+ printf("%s%p:0x%llx [%d]", is_marked ? "*" : "", item, item->key, item->top_level);
+ for (int level = 1; level <= item->top_level; ++level) {
+ node_t *next = (node_t *)STRIP_TAG(item->next[level]);
+ is_marked = IS_TAGGED(item->next[0]);
+ printf(" %p%s", next, is_marked ? "*" : "");
+ if (item == skiplist->head && item->next[level] == NULL)
+ break;