シューティングで単方向LISTを扱っているのですが、
LISTの追加処理がとても不安なので添削してほしいです。

typedef struct tagList{
short x;
short y;
short movx;
short movy;
short flg;
char *next;
}LIST;
-----・・・
/*mainから。*/
ladd(&emp,&mblt);/* LIST *emp,*mblt */

---・・・

/*追加処理*/
void ladd(LIST **emp,LIST **tag){

LIST *emp2,*tag2,*temp;
emp2=*emp;
tag2=*tag;

temp=emp2;

tag2=emp2;
emp2=(LIST *)emp2->next;
(LIST *)tag2->next=temp;

*emp=emp2;
*tag=tag2;

return ;
}

#すでにMAINでもう一個別のLIST型のポインタがmallocしたものを持っていて、そこをいじっています。
#MAINの*empは使用していない領域を担当していて、*mbltは自分の弾丸を担当しています。

とりあえず動いているようですが、あまりこういうことしないので動作自体が不安です。
おかしなエラーとかが見えるようでしたら一言お願いします。