list based data structures in C