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

剑指offer:反转链表

时间:2020-01-28 14:10:09      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:||   node   pre   ==   png   思想   反转   image   迭代   

一、题目描述

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

 

二、思路

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

  技术图片

 

技术图片

 

 

技术图片

 

 

技术图片

 

 

技术图片

 

 三、代码

 

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:反转链表

标签:||   node   pre   ==   png   思想   反转   image   迭代   

原文地址:https://www.cnblogs.com/blzm742624643/p/12237884.html

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