Yes, you can have any number of pointer levels.
int x = 5; int *a = &x; int **b = &a; int ***c = &b; printf("%d %d %d %d\n", x, *a, **b, ***c);
A pointer to a pointer to a pointer is not a linked list. A linked list is a structure type that contains a pointer to its own type:
struct list { int data; struct list *next; };
So you can link them together in a list:
struct list three = { 3, NULL }; struct list two = { 2, &three }; struct list one = { 1, &two }; struct list head = { 0, &one };
And iterating over them:
for (struct list *node = &head; node->next; node = node->next) { printf("%d\n", node->data); }
source share