Revert "Fix nullptr dereference bug in TList::RecursiveRemove()"
Revert "Fix nullptr dereference bug in TList::RecursiveRemove()"

This reverts commit 71b778c4d3ce1d0bff5fc27256bb7bbeaf7263ef.
This commit included some refactorings after review comments,
which introduced a different bug along with fixing the old one.
The problem is that lnk is deleted inside the for loop, and
lnk->Next() is tried on it to move to the next iteration.

olifre/root,olifre/root,zzxuanyuan/root,zzxuanyuan/root,root-mirror/root,karies/root,karies/root,root-mirror/root,zzxuanyuan/root,root-mirror/root,olifre/root,root-mirror/root,olifre/root,zzxuanyuan/root,karies/root,zzxuanyuan/root,zzxuanyuan/root,olifre/root,zzxuanyuan/root,root-mirror/root,karies/root,root-mirror/root,karies/root,zzxuanyuan/root,root-mirror/root,zzxuanyuan/root,karies/root,karies/root,karies/root,karies/root,olifre/root,karies/root,zzxuanyuan/root,olifre/root,zzxuanyuan/root,karies/root,root-mirror/root,olifre/root,olifre/root,root-mirror/root,olifre/root,root-mirror/root,zzxuanyuan/root,root-mirror/root,olifre/root