C++ -- Question about typedef
<p>Given the following code:</p>

<pre><code>typedef struct IntElement
{
    struct IntElement *next; // use struct IntElement
    int         data;
} IntElement;

typedef struct IntElement
{
    IntElement *next; // Use IntElement
    int         data;
} IntElement; // why I can re-use IntElement here?
</code></pre>

<p>I use above data structure to define a linked-list node.</p>

<ol>
<li>Which is better one?</li>
<li>Why I can use duplicated name (i.e. struct IntElement and IntElement in the typedef end)?</li>
</ol>
