I need to implement in C, a fully functional doubly linked list that supports the following operations: - head and tail - insert to the beginning of the list / insert at the end of the list - insert after a node - delete a node in the list The linked list is to store the following object: struct Appointment { int appt_id; int priority; char *caller; time_t start_time; time_t end_time; char **callees; int num_callees; }; Please help..