Reverse Linked List II
2015-07-21 21:28
417 查看
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->6->NULL, m = 2 and n = 5,
return 1->5->4->3->2->6->NULL.
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.
解题思路:
(1)找到结点m的前驱结点记为preNode_m,若结点m为头结点则preNode_m=NULL;找到结点m,记为pNode_m;
(2)将结点m至n之间的链表反转
(3)找到结点n及其后继结点,分别记为pNode_n和nextNode_n
(4)改变指针的指向:结点m的后继结点指向结点n的后继结点;
(5)若结点m的前驱结点为NULL,则将结点n定义为新的头结点;否则,将结点m的前驱结点指向结点n
struct ListNode* reverseBetween(struct ListNode* head, int m, int n) {
}
For example:
Given 1->2->3->4->5->6->NULL, m = 2 and n = 5,
return 1->5->4->3->2->6->NULL.
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.
解题思路:
(1)找到结点m的前驱结点记为preNode_m,若结点m为头结点则preNode_m=NULL;找到结点m,记为pNode_m;
(2)将结点m至n之间的链表反转
(3)找到结点n及其后继结点,分别记为pNode_n和nextNode_n
(4)改变指针的指向:结点m的后继结点指向结点n的后继结点;
(5)若结点m的前驱结点为NULL,则将结点n定义为新的头结点;否则,将结点m的前驱结点指向结点n
struct ListNode* reverseBetween(struct ListNode* head, int m, int n) {
struct ListNode* pNode = head; struct ListNode* preNode_m = NULL;//结点m的前驱结点 for (int i = 1; i < m; i++) { preNode_m = pNode; pNode = pNode->next; } struct ListNode* pNode_m = pNode;//结点m struct ListNode* preNode = NULL; for (int i = m; i <= n; i++) { struct ListNode* pNext = pNode->next; pNode->next = preNode; preNode = pNode; pNode = pNext; } struct ListNode* pNode_n = preNode;//结点n struct ListNode* nextNode_n = pNode;//结点n的后继结点 pNode_m->next = nextNode_n;//结点m的后继结点指向结点n的后继结点 if (preNode_m == NULL) { return pNode_n; } else { preNode_m->next = pNode_n;//结点m的前驱结点指向结点n return head; }
}
相关文章推荐
- 操作系统简单认识
- HDU 1285 确定比赛名次
- hdoj 2277 Change the ball 【找规律】
- 原生JavaScript Demo之星星评分
- 君子求诸己,小人求诸人
- U盘PE装系统-CGI一键还原备份安装方法
- 二分法
- c016---c语言中的预处理
- 这几年彻底迷茫了
- 洛谷1197 [JSOI2008]星球大战
- npm配置代理
- php中preg_match()和preg_match_all()的区别
- CUDA纹理存储器
- MPEG-2 数字视频技术参考指南 (7)—— ATSC数字电视标准
- 我的第一篇博客,先热个身,讲讲Base64吧
- hdu 1024 Max Sum Plus Plus(最大m子段和)
- 读改善c#代码157个建议:建议13~15
- 小波说雨燕 第三季 构建 swift UI 之 UI组件集-视图集(七)Progress View进度条 学习笔记
- Android 系统手电筒最强适配版
- Java-构造器