File tree Expand file tree Collapse file tree 1 file changed +16
-11
lines changed
025_reverse_nodes_in_k_group Expand file tree Collapse file tree 1 file changed +16
-11
lines changed Original file line number Diff line number Diff line change @@ -8,22 +8,27 @@ struct ListNode {
88
99static struct ListNode * reverseKGroup (struct ListNode * head , int k )
1010{
11- int i , len = 0 ;
11+ int len = 0 ;
1212 struct ListNode dummy ;
13- struct ListNode * p = head ;
1413 struct ListNode * prev = & dummy ;
1514 dummy .next = head ;
16- for (p = head ; p != NULL ; p = p -> next ) {
15+ for (; head != NULL ; head = head -> next ) {
1716 if (++ len % k == 0 ) {
18- struct ListNode * begin = prev -> next ;
19- for (i = 1 ; i < k ; i ++ ) {
20- struct ListNode * next = begin -> next ;
21- begin -> next = next -> next ;
22- next -> next = prev -> next ;
23- prev -> next = next ;
17+ /* t always the original first one */
18+ struct ListNode * t = prev -> next ;
19+ /* loop condition implicits the final state */
20+ while (prev -> next != head ) {
21+ /* the new segment head */
22+ struct ListNode * h = t -> next ;
23+ /* deletion */
24+ t -> next = h -> next ;
25+ /* insertion */
26+ h -> next = prev -> next ;
27+ prev -> next = h ;
2428 }
25- p = begin ;
26- prev = p ;
29+ /* For iteration */
30+ prev = t ;
31+ head = t ;
2732 }
2833 }
2934 return dummy .next ;
You can’t perform that action at this time.
0 commit comments