When rereading your first post, I saw you used the word declaration. Note that with typedef you don't declare something, but you define types.
Code:
/* Here the structure listNode is defined. */
stuct listNode{
char data;
stuct listNode *nextPtr;
};
/* Here a type ListNode is defined, which is the same as struct listNode. In other words, a variable of type ListNode is a structure struct listNode. */
typedef struct listNode ListNode;
/* Here a type ListNodePtr is defined. A variable of type ListNodePtr is a pointer to a variable of type ListNode. */
typedef ListNode *ListNodePtr;
So
typedef ListNode *ListNodePtr;
is not the same as
ListNode *ListNodePtr;
In the first, you define a new type. In the second you declare a pointer variable.
Setting the link pointer to NULL, can be done with assigning NULL to it. I already showed how to do that. What is it that you don't understand?