- 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 ", is_marked ? "*" : "", item, item->key);
+ if (item != sl->head) {
+ printf("[%d]", item->top_level);
+ } else {
+ printf("[*]");
+ }
+ 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 == sl->head && item->next[level] == NULL)
+ break;