LeetCode—单链表翻转
2014-08-21 20:50
330 查看
Reverse Linked List II
Reverse a linked list from position m to n. Do it in-place and in one-pass.For example:
Given
1->2->3->4->5->NULL, m = 2 and n =
4,
return
1->4->3->2->5->NULL.
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *reverseBetween(ListNode *head, int m, int n) { if (head == NULL) return NULL; ListNode * pBeginNode = NULL ; ListNode * pEndNode = NULL; ListNode * pmNode = head; ListNode * ptempNode = NULL; ListNode * pnNode = NULL; for(int i = 0; i < (m-1); i++) //<find the node befor mth node { pBeginNode = pmNode; pmNode = pmNode->next; } ptempNode = pmNode; ListNode *pPre = pmNode; pmNode = pmNode->next; for(int i = 0; i < (n-m); i++) //<exchange the node { ListNode *pNext = pmNode->next; pmNode->next = pPre; pPre = pmNode; pmNode = pNext; } ptempNode->next = pmNode; if(pBeginNode) { pBeginNode->next = pPre; } else { head = pPre; } return head; } };
相关文章推荐
- LeetCode | Reverse Linked List II(翻转链表2)
- [leetcode 24]Swap Nodes in Pairs-----成对翻转链表中的节点
- leetcode 206. Reverse Linked List(翻转链表)
- LeetCode 92. Reverse Linked List II(翻转链表)
- leetcode之链表逆序翻转类-----92/206 逆序 24/25/61/143 按规则翻转 86/234 双指针分治 19/82/83/203 按规则删除
- [LeetCode] Reverse Nodes in k-Group每k个一组翻转链表
- [LeetCode] Reverse Nodes in k-Group 每k个一组翻转链表
- 【LeetCode】 Reverse Linked List 翻转链表 ( Uber,FB ) - Medium++
- [LeetCode系列]翻转链表问题II
- Reverse Linked List II 局部翻转链表@LeetCode
- LeetCode_206. Reverse Linked List-翻转链表
- leetcode+链表翻转,快慢指针,经典套路
- leetcode-单链表翻转
- leetcode 61 --Rotate List 链表 循环/断开 翻转
- LeetCode Reverse Linked List翻转链表
- leetcode笔记—翻转链表
- LeetCode | Reverse Nodes in k-Group(k个结点一组翻转链表)
- LeetCode 单链表翻转
- Leetcode 206. Reverse Linked List 链表翻转 Python 两种解法
- LeetCode-Reverse Linked List II-翻转链表区间-链表操作