Hello... at the moment I am EXTREMELY confused with how linked lists work. I understand everything conceptually, but I just don't get how to code them into a simple program at all...

Our professor gives us this code to work with for some sample code, and I was wondering if for starters someone could help me decypher what all this code does (meaning, what does it do in and of itself, but also what the heck does it do in the grand scheme of things for linked lists?):

struct Node{
int data;
Node *next;
Node(): data(0), next(NULL) {}
Node(int d) : data(d), next(NULL) {}
Node(int d, Node *n): data(d), next(n){}
};

In the lecture notes, immediately after showing this code, she mentions some example calls as being the following:

Node *p = new Node(3);
Node *q = new Node(5, p);
Node *r = new Node(12, NULL);

Of course, since I don't understand the former code, I have no clue what this means, as well! I'd appreciate any and all help in explaining what's goin on with this. Please note that I've tried googling help on linked lists a couple times and the webpages confused me even more; please keep it simple for me, I'm slow at this!