码迷,mamicode.com
首页 > 其他好文 > 详细

92:Reverse Linked List II翻转链表【链表】

时间:2015-04-07 19:35:51      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:

题目连接:click~

/*题意:将链表中第m到n个结点翻转 */

/**
 *思路:为更好处理表头和第m个结点,引入root结点,同时记录
 *      第m-1个结点。从第m个结点开始遍历至第n个结点,将已经
 *      遍历过的结点插入在第m-1个结点后,并保证第m个结点的next
 *      指向遍历结点的next,以避免链表断裂
 */



class Solution {
public:
    ListNode *reverseBetween(ListNode *head, int m, int n) {
        ListNode *root = new ListNode(0);
        root->next = head;
        ListNode *mNode = new ListNode(0);
        ListNode *pre = root , *curr = head;
        for(int i = 1; i <= n; i ++) {
            if(i == m) mNode = curr;  //记录第m个结点
            if(i < m) pre = curr;     //记录第m-1个结点
            ListNode *next = curr->next;
            if(i > m && i <= n) {
                mNode->next = next;   //避免链表断裂
                curr->next = pre->next;
                pre->next = curr;
            }
            curr = next;
        }
        return root->next;
    }
};

  

92:Reverse Linked List II翻转链表【链表】

标签:

原文地址:http://www.cnblogs.com/jzmzy/p/4398989.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!