方法1
public class Node {int data;Node next = null;public Node(int data){this.data = data;}public static Node reverseSingleLink(Node head){Node front = null;Node succ = null;Node p = head.next;//不知道是不是如果不帶頭結點,就是p = head了?還是搞不清楚頭結點這個東西。while(p != null){succ = p.next;p.next = front;front = p;p = succ;}return front;}public static void main(String[] args){Node head = new Node(0);Node tail = head; for(int i = 1 ; i < 4; ++i){ Node p = new Node(i); tail.next = p; tail = p; } head = reverseSingleLink(head); while(head!= null){ System.out.println(head.data); head = head.next; }}}
方法3、我還沒有看懂。遞迴方法。
public class List { Node head; Node tail; public void reverse0(List list) { Node last = reverse(list.head); list.tail = last; list.tail.next = null; } public Node reverse(Node hd) { if (hd == null) { return null; } else if (hd.next == null) { head = hd; // the last one becomes the head } else { Node node = reverse(hd.next); node.next = hd; } return hd; } } class Node { int data; Node next; public Node(int i) { data = i; } }