What is a skip pointer?

It is used for efficient merging.

Suppose we have 2 lists.

1->2->3

5->7->8

When merging these.

We have 3 steps

1->2->3
^
1<5
1->2->3
   ^
1<5
1->2->3
      ^
1<5

We could have reduced this to 1 step however, since these lists are sorted, we just do skip list directly to 3:

1->2->3
\_____/
3<5

Doing this on regular intervals can speed up this process.