public class LinkedListReverse {
public static void main(String[] args) {
Node head = new Node(0);
Node node1 = new Node(1);
Node node2 = new Node(2);
Node node3 = new Node(3);
head.next = node1;
node1.next = node2;
node2.next = node3;
// 打印反转前的链表
Node h = head;
while (null != h) {
System.out.print(h.date + " ");
h = h.next;
}
// 调用反转方法
// head = reverse(head);
head = reverses(head);
System.out.println("\n**************************");
// 打印反转后的结果
while (null != head) {
System.out.print(head.date + " ");
head = head.next;
}
}
public static Node reverse(Node head) {
if (head == null) {
return head;
}
Node pre = head;
Node node = head.next;
Node temp = null;
while (node != null) {
temp = node.next;
node.next = pre;
pre = node;
node = temp;
}
head.next=null;
return pre;
}
public static Node reverses(Node node){
if(node == null || node.next ==null){
return node;
}
Node newNode = reverses(node.next);
node.next.next = node;
node.next = null;
return newNode;
}
}
class Node {
int date;// 数据域
Node next;// 指针域
public Node(int date) {
// super();
this.date = date;
}
}