Sparse linked list insert function
Do what you say


 * return 0 if operation is succesfull
 *        1 if malloc failed */



So if a malloc fails, you are supposed to return 1.  But when you do the actual check:  


    ElementNode *new_node = make_node(pos, data);
    /* Malloc fail check*/
    if (new_node == NULL)
    {
      return 0;
    }



You return 0.  

You return 1 on success -- the exact opposite of the comment.  You should either update the comment to match the code or change the code to match the comment.  Or remove the comment--if you have to read the code anyway, why bother?  

Keep it simple


      ElementNode *next     = current-&gt;next;
      current-&gt;next         = new_node;
      new_node-&gt;next        = next;



Why do you need next?  Consider 

      new_node-&gt;next = current-&gt;next;
      current-&gt;next = new_node;


You save an assignment and a variable declaration by just changing the order in which two lines happen.