链表指定区间元素的反转

来源:互联网 发布:linux下etc没有inittab 编辑:程序博客网 时间:2024/06/08 22:37

Reverse a linked list from position m ton. 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.


涉及到对四个节点进行处理,12345->21345->32145->43215->54321



class Solution {public:    ListNode* reverseBetween(ListNode* head, int m, int n) {                if(m==n)return head;        ListNode*pre =new ListNode (-1);                pre->next=head;        ListNode*prehead=pre;        for(int i=1;i<m;i++)        {            prehead=prehead->next;        }                n-=m;        ListNode* pstart=prehead->next;        //链表反转涉及到四个节点        for(int i=1;i<=n;i++)        {            ListNode* p=pstart->next;            pstart->next=p->next;            p->next=prehead->next;                        prehead->next=p;                    }                return pre->next;            }};

0 0
原创粉丝点击