LeetCode OJ--Reverse Linked List II

http://oj.leetcode.com/problems/reverse-linked-list-ii/

链表的操作

#include <iostream>
using namespace std;
 
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 dummy(-1);
        dummy.next = head;

        ListNode *prev = &dummy;
        for(int i = 0;i<m-1;++i)
        {
            prev = prev->next;
        }
        ListNode* const head2 = prev;

        prev = head2->next;
        ListNode *cur = prev->next;
        for(int i = m;i<n;++i)
        {
            prev->next = cur->next;
            cur->next = head2->next;
            head2->next = cur;
            cur = prev->next;
        }
        return dummy.next;
    }
};

int main()
{
    ListNode *n1 = new ListNode(1);
    ListNode *n2 = new ListNode(2);
    ListNode *n3 = new ListNode(3);
    ListNode *n4 = new ListNode(4);
    ListNode *n5 = new ListNode(5);
    n1->next = n2;
    n2->next = n3;
    n3->next = n4;
    n4->next = n5;
    ListNode *ans;
    Solution myS;
    ans = myS.reverseBetween(n1,2,4);
    return 0;
}
原文地址:https://www.cnblogs.com/qingcheng/p/3548505.html