题解 | #链表内指定区间反转#
链表内指定区间反转
https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类 */ struct ListNode* reverseBetween(struct ListNode* head, int m, int n ) { // write code here struct ListNode *next_node = NULL; struct ListNode *node = head; struct ListNode *last_node = NULL; struct ListNode *start = NULL; struct ListNode *first = NULL; struct ListNode *end = NULL; int cnt = 1; if (m == n) return head; while(node && (cnt <= n)) { if (cnt == m) { start = last_node; first = node; } next_node = node->next; if (cnt == n) end = next_node; if (cnt > m) { node->next = last_node; } cnt++; last_node = node; node = next_node; } first->next = end; if (start) { start->next = last_node; } else { head = last_node; } return head; }