linked list syntax in C : <p>I am trying to understand the syntax of linked lists by visualising it through diagrams. However I am getting confused. This code prints out 0-9. I don't understand the commented bits, please explain visually.</p>

<pre><code>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

struct node
{
    int item;
    struct node* link;
};

int main()
{
    struct node *start,*list;
    int i;
    start = (struct node *)malloc(sizeof(struct node)); //???????
    list = start; // ????????
    start-&gt;link = NULL; // ??????????
    for(i=0;i&lt;10;i++)
    {
        list-&gt;item = i;
        list-&gt;link = (struct node *)malloc(sizeof(struct node));
        list = list-&gt;link;
    }
    list-&gt;link = NULL; //????????????
    while(start != NULL) //??????????????
    {
        printf("%d\n",start-&gt;item);
        start = start-&gt;link;
    }
    return 0;
} 
</code></pre>
