zoukankan      html  css  js  c++  java
  • [LeetCode] Reverse Linked List II

    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 ≤ mn ≤ length of list.

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        ListNode *reverseBetween(ListNode *head, int m, int n) {
            if(m==n)
                return head;
            int num = 1;
            ListNode *h = head;
            ListNode *Pm = head,*Pm_pre=NULL;
            while(num != m){
                Pm_pre = Pm;
                Pm = Pm->next;
                num++;
            }//end while
            ListNode *p1 = Pm,*p2 = p1->next,*p3 = NULL;
            while(num!=n){
               p3 = p2->next;
               p2->next = p1;
               p1 = p2;
               p2 = p3;
               num++;
            }//end while
            if(Pm_pre!=NULL){
              Pm_pre->next = p1;
              Pm->next   = p2;
            }else{
              h = p1;
              Pm->next = p2;
            }
            return h;
        }
    };
  • 相关阅读:
    Swing 2
    Swing 1
    集合
    关于sql 模糊字段查询语句
    关于前端开发的几篇文章
    黄金点游戏
    word count
    四则运算
    软件工程——《构建之法》读后困惑
    自我介绍
  • 原文地址:https://www.cnblogs.com/Xylophone/p/3908604.html
Copyright © 2011-2022 走看看