天天看点

【剑指offer】第24题,翻转链表【剑指offer】第24题,翻转链表

【剑指offer】第24题,翻转链表

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
           
限制:
0 <= 节点个数 <= 5000
           

为了正确的翻转一个链表,需要调整链表指针的方向。将指针朝相反的方向翻转。

这时需要三个指针,来保存链表的头节点,当前节点的上一个节点,以及当前节点的下一个节点。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode temp=head;
        //保存上一个节点
        ListNode prev=null;
        while(true){
            if(temp==null) break;
            //用来保存下一个节点
            ListNode next=temp.next;
            temp.next=prev;
            prev=temp;
            temp=next;
        }
        return prev;
    }
}
           

继续阅读