码迷,mamicode.com
首页 > 其他好文 > 详细

链表——将单链表从m到n的结点位置翻转

时间:2016-05-12 21:31:10      阅读:919      评论:0      收藏:0      [点我收藏+]

标签:

题目:反转链表从m-n位置的结点


For example:
Given1->2->3->4->5->NULL, m = 2 and n = 4,

return1->4->3->2->5->NULL.

从第二到第四的结点被反转了。


其中m和n满足条件:
1 ≤ m ≤ n ≤ length of list.


思路:

仍是逆序,仍考虑到用辅助空间stack.

将m-n的结点依次入栈,并标记与入栈结点相邻的前后两个结点pfirst和psecond

(若m==1,pfirst=null,不管n是否为length of list,对psecond的情况无影响。)


代码如下:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
import java.util.*;
public class Solution {
    public ListNode reverseBetween(ListNode head, int m, int n) {
        if(head==null)
            return null;
        if(m==n)
            return head;
        
        Stack<ListNode> stack=new Stack();
        //将m-n的结点入栈,将前后相邻的两个结点标记;
        
        int num=1;
        
        ListNode pfirst=null;
        ListNode psecond=null;
        
        ListNode p=head;
        //特殊情况,m==1时,头结点变更;
        if(m==1)
                {
                pfirst=null;
            }
        
        for(;num<=n;num++)
            {
            //记录pfirst;
             if(num<m)
                {
                if(num==m-1)
                    {
                    pfirst=p;
                }
                p=p.next;  
                }
                        
            else if(num>=m&&num<=n)
                {
                stack.push(p);
                p=p.next;
            }
        }
        //记录psecond,psecond的一般情况仍适用于n=length of list的特殊情况;
               psecond=p;
        
        //开始操作链表;
        if(pfirst==null)
            {
            head=stack.pop();
            pfirst=head;
        }
        while(!stack.empty())
            {
            pfirst.next=stack.pop();
            pfirst=pfirst.next;
        }
        
            pfirst.next=psecond;

        return head;
    }
}

链表——将单链表从m到n的结点位置翻转

标签:

原文地址:http://blog.csdn.net/jingsuwen1/article/details/51352598

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!