title: Understanding typedef with struct
body: <p>I am getting a hard time understanding this sample of code:</p>
  
  <pre><code>typedef struct node
  {
          int data;
          struct node * next;
  } node;
  
  typedef node * nodepointer;
  </code></pre>
  
  <p>So, we are building the struct node using typedef... I assume we are doing this in order to initialize the struct without the "struct" keyword being necessary.</p>
  
  <p>I want to ask why in the struct definition we used the name "node" <strong>twice</strong> (at start and end).</p>
  
  <p>Secondly what <code>typedef node * nodepointer;</code> points to. Is it necessary to use typedef in this case? Is this expression <code>node * nodepointer;</code> not equal?</p>