#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 = new ListNode(0), *pre = dummy, *cur; dummy -> next = head; for (int i = 0; i < m - 1; i++) { pre = pre -> next; } cur = pre -> next; for (int i = 0; i < n - m; i++) { ListNode* temp = pre -> next; pre -> next = cur -> next; cur -> next = cur -> next -> next; pre -> next -> next = temp; } return dummy -> next; } }; void test_data() { ListNode *head = new ListNode(0); ListNode *p ; p = head; Solution s; int n = 0; int T = 5; while (T-- && cin >> n) { ListNode *q; q = new ListNode(n); p->next = q; p = q; } p->next = NULL; head = head->next; s.reverseBetween(head, 2, 4); while (head) { cout << head->val << " "; head = head->next; } } int main() { test_data(); return 0; }