直接代码如下:
public static void main(String[] args) { SingleNode A = new SingleNode("A"); SingleNode B = new SingleNode("B"); SingleNode C = new SingleNode("C"); SingleNode D = new SingleNode("D"); A.setNext(B); B.setNext(C); C.setNext(D); SingleNode head = reverseSingleNode(A); System.out.println("\n**************************"); // 打印反转后的结果 while (null != head) { System.out.print(head.getName() + " "); head = head.getNext(); } } private static SingleNode reverseSingleNode(SingleNode h) { if (h == null) return h; SingleNode p = h.getNext(); if (p == null) { return h; } SingleNode rh = reverseSingleNode(p); h.getNext().setNext(h); h.setNext(null); return rh; } private static SingleNode reverseSingleNode2(SingleNode h) { if (h == null) return h; SingleNode pre = h; SingleNode cur = h.getNext(); SingleNode tmp = null; while (cur != null) { tmp = cur.getNext(); cur.setNext(pre); pre = cur; cur = tmp; } h.setNext(null); return pre; } public static class SingleNode { private SingleNode next; private String name; public SingleNode(String name) { this.name = name; } public SingleNode getNext() { return next; } public void setNext(SingleNode next) { this.next = next; } public String getName() { return name; } public void setName(String name) { this.name = name; } }