llist_t clone(const llist_t ls){   //リストをコピーし新たなリストを返す関数
llist_t np;

if(ls == NULL){
return ls;
}
else if(ls != NULL){
np = allocNode();  //ノード領域の確保
np->next = clone(ls->next);  //ノードへのポインタ
np->data = ls->data;  //リストの要素

return np;
}

return np;
}

これを逆順にコピーしたいんですが、教えていただけないでしょうか。