节点插入函数的问题


NODE* insertnode(NODE* plist,NODE* ppre,DATA item)
{
NODE* pnew;
if(!(pnew=(NODE*)malloc(sizeof(NODE))))
   printf("\amemory overflow in insert\n"),
    exit(100);
pnew->data=item;
if(ppre==NULL)//判断是否是第一个节点或者是空列表,似乎也能判断是否是结尾节点  请各位帮我分析一下这个逻辑问题     谢谢
{
  pnew->link=plist;
  plist=pnew;
 }
else//中间节点或者结尾
  {
pnew->link=ppre->link;
ppre->link=pnew;
  }
return plist;
}