DSA: Problems on Recursion, Pointers, and Dynamic Allocation