public class Node {
private Node next;
private int value;
public boolean hasNext() {
return next != null;
}
public Node() {
}
public Node(Node next, int value) {
super();
this.next = next;
this.value = value;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
public class Test {
public static void main(String[] args) {
Node list = makeList();
printList(list);
reverse(list);
printList(list);
}
private static Node makeList() {
Node head = new Node();
for(int i=100; i>0; i--){
Node node = new Node();
Node temp = head.getNext();
node.setNext(temp);
node.setValue(i);
head.setNext(node);
}
List list = new List();
return head;
}
private static void printList(Node head) {
while(head.hasNext()){
System.out.print(head.getNext().getValue()+" ");
head = head.getNext();
}
System.out.println();
}
private static void reverse (Node head) {
//没有节点
if (!head.hasNext()) {
return;
}
Node next = head.getNext();//第一个节点
//只有一个节点,不需要翻转
if (!next.hasNext()) {
return;
}
Node curr = next.getNext();//第二个节点
next.setNext(null);//翻转后第一个成为最后一个了
while(curr.hasNext()){
Node tem = curr.getNext();
curr.setNext(next);
next = curr;
curr = tem;
}
curr.setNext(next);
head.setNext(curr);//新的头节点
}
}