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、输入参数中只有一个节点、输入正常的链表是否可以正常返回。