For efficient data structure linked list is best choice .for example udp data structure in link list
/* The UDP data packet structure */
struct udp_data
{
struct udp_data* u_next;
short id; /* id for this packet */
void * u_data; /* packet data */
//Add more field if you want
......................................
.........................................
};
typedef struct udp_data *UDP_DATA;
And most important thing you must know linked list management.