/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类 */ void fanzhuan(struct ListNode * head,int m,int n) { struct ListNode * pre; struct ListNode * cur=head; struct ListNode * next; for(int i=0;i<n-m+1;i++) { next=cur->next; cur->next=pre; pre=cur; cur=next; } } struct ListNode* reverseBetween(struct ListNode* head, int m, int n ) { int i; struct ListNode * dummy=(struct ListNode *)malloc(sizeof(struct ListNode)); dummy->next=head; struct ListNode * pre=dummy; struct ListNode * start; struct ListNode * end=dummy; struct ListNode * last; for(i=0;i<m-1;i++) { pre=pre->next; } start=pre->next; for(i=0;i<n;i++) { end=end->next; } last=end->next; fanzhuan(start,m,n); pre->next=end; start->next=last; return dummy->next; }