A linked list is what the name implies : a list of objects that are linked together by pointers. In this case, the object is an integer, Data, and the pointer to the next item in the list is Next. The variable H is a pointer to the head of the list. The variable p is a pointer to an item in the list. In the for loop it points to the last item added. In the while loop it points to the current item in the iteration. Items are added to the list by creating a new object and assigning the Next pointer of the last item in the list to this new object. In the while loop you can see how list is chained together through the Next pointer. The pointer p steps through the list, one item at a time, until it encounters a null Next pointer which indicates the last item in the list.
You might want to read up on linked lists in a little more detail :
Linked list - Wikipedia[
^]