List *list_middle(List *l) { List *fast; List *slow; fast = slow = l; while (fast != NULL) { if (fast->next) fast = fast->next->next; else return slow; slow = slow->next; } return slow; }