算法:链表的逆转
2014-04-12 19:00
323 查看
LeetCode OJ Problem: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.
class Solution { public: ListNode *reverseBetween(ListNode *head, int m, int n) { ListNode *p, *pre_p, *r, *head2; int temp; pre_p = p = r = head; if(m == n) return head; while(m > 1) { pre_p = p; p = p->next; m--; } while(n > 1) { r = r->next; n--; } head2 = r->next; r->next = NULL; if( pre_p != p)//第一个要逆转的结点不为头结点 { pre_p->next = NULL; reverseList(p, r); pre_p->next = p; r->next = head2; } else { reverseList(head, r); r->next = head2; } return head; } void reverseList(ListNode *&head, ListNode *&end){ if((head == NULL) || (head->next == NULL)) return ; ListNode *p, *q, *r; end = p = head; r = head->next; head->next = NULL; while(r != NULL) { q = r; r = r->next; q->next = p; p = q; } head = p; } };
相关文章推荐
- 【算法设计-单链表的逆转】单链表逆转实现
- pta-数据结构与算法题目集(中文)-4-1-单链表逆转
- 一步一步写算法(之链表逆转) (转)
- 一步一步写算法(之链表逆转)
- 一步一步写算法(之链表逆转)
- 一步一步写算法(之链表逆转)
- 一步一步写算法(之链表逆转)
- 链表逆转的一个算法
- 算法学习之旅,初级篇(27)-–逆转一个链表
- 【算法】Java单链表逆转
- 二哥学算法之链表逆转
- 数据结构及算法——单链表逆转(C语言)(不间断更新)
- 经典算法学习——逆转链表
- 新手学习数据结构与算法---链表归并
- 09-数据结构_线性结构-离散存储-链表_插删伪算法
- 第四周项目2—建立“单链表”算法库
- 【算法学习笔记】07.数据结构基础 链表 初步练习
- 郝斌老师的链表算法演示
- 剑指offer-算法题练习:part17 反转链表
- 试分别以顺序表和单链表作存储结构,各写一实现线性表就地逆置的算法