Java反转单链表

 Java反转单链表_第1张图片

/**
 * Definition for singly-linked list.
 * public class ListNode {
 * int val;
 * ListNode next;
 * ListNode() {}
 * ListNode(int val) { this.val = val; }
 * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
//核心思想,利用cur和Curnext分别记录head的前驱和cur的前驱,再去改变箭头方向
class Solution {
    public ListNode reverseList(ListNode head) {
        if(head==null)return head;//为空的链表
        if(head.next==null)return head;//一个值反转还是自己
        ListNode cur=head.next;
        ListNode Curnext;
        head.next=null;//第一个节点的值会变成转换完成的最后一个节点,需要手动改变指向null
        while(cur!=null){
            Curnext=cur.next; 
            cur.next=head;//改变箭头方向
            head=cur;
            cur=Curnext;
        }    
        return head;
    }
}

反转一个单链表

你可能感兴趣的:(java练习题,数据结构)