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; }