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;
        }
    };
  • 相关阅读:
    apache多端口映射
    mark
    一些注册表值
    jsp URL中文处理的几种方式
    【引用】雨林木风Ghost XP SP3系统
    CentOS常用命令
    查看ie8临时文件夹
    卡塔兰数
    大数问题
    不会做的题目
  • 原文地址:https://www.cnblogs.com/Xylophone/p/3908604.html
Copyright © 2011-2022 走看看