部分翻转链表Reverse Linked List II
2017-05-16 14:15
543 查看
/** * 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) { ListNode*ahead=new ListNode(-1); ahead->next=head; ListNode*p1=ahead; ListNode*p2=head; for(int i=1;i<m;i++) p1=p1->next; for(int i=1;i<n;i++) p2=p2->next; ListNode*p3=p2->next; p2->next=NULL; p1->next=reverse(p1->next); ListNode*q=p1->next; while(q->next)q=q->next; q->next=p3; return ahead->next; } ListNode* reverse(ListNode* head) { ListNode*rhead=NULL; ListNode*p=head; ListNode*pre=NULL; while(p) { ListNode*pnext=p->next; if(pnext==NULL)rhead=p; p->next=pre; pre=p; p=pnext; } return rhead; } };
相关文章推荐
- Reverse Linked List II -- 翻转部分链表
- [Lintcode]Reverse Linked List II 翻转链表 II
- [LeetCode] Reverse Linked List I II - 链表翻转问题
- Leetcode 92. Reverse Linked List II 翻转链表2 解题报告
- Reverse Linked List II 局部翻转链表@LeetCode
- LeetCode | Reverse Linked List II(翻转链表2)
- 92:Reverse Linked List II翻转链表【链表】
- leetcode——Reverse Linked List II 选择链表中部分节点逆序(AC)
- LeetCode-Reverse Linked List II-翻转链表区间-链表操作
- LeetCode 92. Reverse Linked List II(翻转链表)
- Reverse Linked List II 翻转链表II
- Leetcode Reverse Linked List II 反转部分单向链表
- leetcode——Reverse Linked List II 选择链表中部分节点逆序(AC)
- lintcode 中等题: reverse linked list II 翻转链表II
- LeetCode-Reverse Linked List II(反转链表)
- 92. Reverse Linked List II【遍历一遍就反转链表】
- [Leetcode] Reverse linked list ii 反转链表
- leetCode 92.Reverse Linked List II (反转链表II) 解题思路和方法
- 35. 翻转链表(reverse-linked-list)(c++)----lintcode面试题之链表
- 【LeetCode-面试算法经典-Java实现】【092-Reverse Linked List II(反转单链表II)】