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.
/** * Definition for singly-linked list. * struct ListNode {* int val; * ListNode *next; * listnode (int x): Val (x), Next (NULL) {} *}; */class Soluti On {public: listnode *reversebetween (listnode *head, int m, int n) { if (head = = NULL | | head->next = NULL || M==n) return head; listnode* he = head; listnode* pre = head; int i=1; while (i<m) { he = Pre; Pre = pre->next; i++; } listnode* pre_end = pre; listnode* end = pre->next; while (I<n) { Pre_end->next = end->next; End->next = pre; Pre = end; End = pre_end->next; i++; } if (m==1) return pre; He->next = pre; return head; };
Leetcode--reverse Linked List II