代码如下:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseBetween(struct ListNode* head, int m, int n) {
if(m==n)
return head;
struct ListNode* front;
struct ListNode* after;
struct ListNode* temp;
temp = head;
for(int l=1;l<m-1;l++)
{
temp=temp->next;
}
printf("%d",temp->val);
if(m==1)
{
front=NULL;
}
else
{
front=temp;
temp=temp->next;
}
struct ListNode* p1;
struct ListNode* p2;
struct ListNode* p3;
p1=temp;
p2=temp->next;
p3=temp->next->next;
for(int l=m;l<n;l++)
{
p2->next=p1;
p1=p2;
p2=p3;
if(p3!=NULL)
p3=p3->next;
}
after=p2;
temp->next=after;
if(front!=NULL)
{
front->next=p1;
return head;
}
return p1;
}