206. Reverse Linked List(java)

来源:互联网 发布:数据库面试宝典 编辑:程序博客网 时间:2024/05/20 07:32

206. Reverse Linked List

遍历反转法
遍历反转法是从前往后依次反转当前结点的指针域的指向,使其指向前一个节点。
   基本思路:将当前节点cur的下一个节点 cur.next缓存到temp后,然后令当前节点指针指向前一结点pre。在更改反转当前结点指针域前,要把指针域用tmp临时保存,以便于下一次使用。
   pre:前一结点
   cur: 当前结点
   tmp: 临时结点,用于保存当前结点的指针域(即下一结点)
Java链表节点定义:
/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */
反转代码如下
public class Solution {    public ListNode reverseList(ListNode head) {        if(head==null){            return head;}        ListNode pre = head;        ListNode cur = head.next;// 当前结点         ListNode tmp;// 临时节点,用于保存当前结点的指针域(即下一结点)        while(cur!=null){            tmp = cur.next;            cur.next = pre;//令指针域的指向前一节点            //下一个节点            pre=cur;            cur=tmp;        }        //将原链表头节点的指针域置为null,返回新链表的头结点,即原链表的尾结点        head.next=null;        return pre;    }}





原创粉丝点击