leetcode 题目92 reverseBetween
先说限制区间的反转,给定一个left,一个right,反转这两个之间的数
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseBetween(struct ListNode* head, int left, int right){
//建假头
struct ListNode* VirtualHead = malloc(sizeof(struct ListNode));
VirtualHead->val = -1;
VirtualHead->next = head;
struct ListNode* pre = VirtualHead;
//准备开始,找开始的地方
for (int i=0; i<left-1; i++){
pre = pre->next;
}
struct ListNode* curr = pre->next;
struct ListNode* next;
for(int i=0; i<right-left; i++){
next = curr->next;
curr->next = next->next;
next->next = pre->next;
pre->next = next;
}
return VirtualHead->next;
}
执行结果:<