Ciao a tutti

Sto studiando il C.
Sul libro (Deitel) sono arrivato alle strutture.
C'è una parte di codice che non capisco e che inserisco di seguito.
LISTNODEPTR come deve essere usato? E' un puntatore a un tipo di dato? Se qualcuno mi può aiutare...

/* Operating and maintaining a list */
#include <stdio.h>
#include <stdlib.h>

struct listNode { /* self-referential structure */
char data;
struct listNode *nextPtr;
};

typedef struct listNode LISTNODE;
typedef LISTNODE *LISTNODEPTR;

void insert(LISTNODEPTR *, char);
char delete(LISTNODEPTR *, char);
int isEmpty(LISTNODEPTR);
void printList(LISTNODEPTR);
void instructions(void);