4.4 Dynamic Memory Management in C and Linked List