Leetcode#92 Reverse Linked List II

原题地址

第一步,找到将要翻转的位置,记录翻转部分前一个节点(prev)

第二步,翻转,记录翻转完成后这部分的首(reverseHead)和尾(reverseTail),以及翻转部分之后的一个节点(post)

第三部,将prev、reverseHead、reverseTail、post连接起来

代码:

 ListNode *reverseBetween(ListNode *head, int m, int n) {
ListNode *node = head;
ListNode *prev = NULL;
ListNode *post = NULL;
ListNode *reverseHead = NULL;
ListNode *reverseTail = NULL;
int count = ; if (!head)
return NULL; prev = NULL;
while (node && count < m ) {
prev = node;
node = node->next;
count++;
} if (!node)
return head; reverseTail = node;
post = node->next;
while (post && count < n) {
ListNode *postNext = post->next;
post->next = node;
node = post;
post = postNext;
count++;
}
reverseHead = node;
reverseTail->next = post; if (!prev)
return reverseHead;
else {
prev->next = reverseHead;
return head;
}
}
上一篇:jcmd命令使用


下一篇:Zepto 使用过程中遇到的问题总结