寫了一整天, 這絕對不是可以接受的時間啊哈哈哈哈哈~~~(奔入雨中)
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseBetween(struct ListNode* head, int left, int right){
if ((left == right) || (head == NULL) || (head -> next == NULL))
return head;
int count=1;
struct ListNode *pPre, *pCurr, *pNext;
struct ListNode *pPreLeft,*pLeft;
pPreLeft=NULL;
pLeft = head;
while(count++ <left)
{
pPreLeft=pLeft;
pLeft = pLeft->next;
}
pPre = pPreLeft;
pCurr = pLeft;
pNext = pCurr;
count-=1;
while(count++ < right)
{
pNext = pCurr->next;
pCurr->next = pPre;
pPre=pCurr;
pCurr = pNext;
}
pLeft->next = pCurr->next;
pCurr->next = pPre;
pPre=pCurr;
if(pPreLeft==NULL)
head=pPre;
else
pPreLeft->next = pPre;
return head;
}
哦看了一下別人的解法, 似乎可以沿路把pre-reverse 的next 先指去下一個呀!
貌似不錯~(thinking 圖)
也就是說我離開while 後的前後接link 其實可以都包進while 裡面!
沒有留言:
張貼留言