标签:style blog color io ar sp div on log
This is a very good linked list question, as there are tricky cases you have to consider, and getting them all right in one place is harder than it looks. It also has a very obvious simple solution, which is to iterate the list twice. The first time to count how many elements in the list, and the second time to find the splitting point. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 void FrontBackSplit(Node *head, Node **front, Node **back) { if (!head) return; // Handle empty list Node *front_last_node; Node *slow = head; Node *fast = head; while (fast) { front_last_node = slow; slow = slow->next; fast = (fast->next) ? fast->next->next : NULL; } front_last_node->next = NULL; // ends the front sublist *front = head; *back = slow; }
标签:style blog color io ar sp div on log
原文地址:http://www.cnblogs.com/leetcode/p/4020089.html