翻转链表

public class ReverseLink{
    static class LNode{
        int data;
        LNode next;
        public LNode(int data){
            this.data = data;
        }
    }
    LNode head;
    LNode current;
    public void add(int data){
        if(head==null){
            head = new LNode(data);
            current = head;
        }else{
            current.next = new LNode(data);
            current = current.next;
        }
    }
    public void print(LNode node){
        LNode temp = node;
        while(temp!=null){
            System.out.println(temp.data);
            temp = temp.next;
        }
    }
    public LNode reverse(LNode node){
        if(node == null) return null;
        LNode current = node;
        LNode pre = null;
        LNode next = null;
        while(current!=null){
            next = current.next;
            current.next=pre;
            pre=current;
            current =next;
        }
        return pre;
    }
    public static void main(String[] args){
        ReverseLink r = new ReverseLink();
        for(int i=1;i<10;i++){
            r.add(i);
        }
        r.print(r.head);
        System.out.println("----------------");
        LNode result = r.reverse(r.head);
        r.print(result);
        //链表为null
        // LNode head = new LNode(5);
        // LNode result = r.reverse(head);
        // r.print(result);
        
        
    }
}

  这种情况下要考虑:输入参数为 null、输入参数中只有一个节点、输入正常的链表是否可以正常返回。

原文地址:https://www.cnblogs.com/yingpu/p/9202612.html