牛客的一道题,区间反转链表,请大佬指点
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类 */ #include <stdio.h> #include <stdlib.h> struct ListNode* reverseBetween(struct ListNode* head, int m, int n ) { // write code here if(m==n) return head; struct ListNode *g,*p,*h; g=p=NULL; h=head; struct ListNode *w=(struct ListNode*)malloc(sizeof(struct ListNode)); struct ListNode *now=(struct ListNode*)malloc(sizeof(struct ListNode)); now=head; while (now->val!=m) { now=head->next; head=head->next; } w=head; while (n!=w->val) { w=head->next; head=head->next; } g=h; if(w->next!=NULL){ g->next=w; } g=w->next; while(now!=w){ p=now->next; now->next=g; g=now; now=p; } now->next=g; if(h->next!=NULL) return h; return now; }