剑指offer:反转链表

Posted blzm742624643

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer:反转链表相关的知识,希望对你有一定的参考价值。

一、题目描述

  输入一个链表,反转链表后,输出新链表的表头。

 

二、思路

  使用迭代的思想,从前往后遍历链表。定义三个指针,分别指向三个相邻的结点。反转前两个节点,然后将三个指针依次后移。直到第二个指针为空。最后再处理链表头尾结点。

  技术图片

 

技术图片

 

 

技术图片

 

 

技术图片

 

 

技术图片

 

 三、代码

 

public class 反转链表 {
	
	public class ListNode {
	    int val;
	    ListNode next = null;

	    ListNode(int val) {
	        this.val = val;
	    }
	}
	
    public ListNode ReverseList(ListNode head) {
    	if(head==null||head.next==null){
    		return head;
    	}
    	else{
    		ListNode p1 = head;
    		ListNode p2 = p1.next;
    		ListNode p3 = p2.next;
    		
    		while(p2!=null){
    			p3 = p2.next;
    			p2.next = p1;  //第二个结点指向第一个结点进行反转
    			p1 = p2;	   //第一个结点后移	
    			p2 = p3;	   //第二个结点后移
    		}
    		
    		head.next = null;
    		head = p1;
    		return head;
    	}
    }
}

  

以上是关于剑指offer:反转链表的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer-反转链表

剑指Offer:反转链表

剑指offer:反转链表

剑指offer-反转链表

剑指OFFER 反转链表

反转链表-剑指Offer