class MyLinkedList{
public static void main(String[] args) {
Node n = new Node();
n.val = 0;
n.add(n);
Node n1 = new Node();
n1.val = 1;
n.add(n1);
Node n2 = new Node();
n2.val = 2;
n.add(n2);
Node n3 = new Node();
n3.val = 3;
n.add(n3);
n.getAll();
System.out.println("\n========");
Node reverse = n.reverse();
n.getAll();
while (reverse!=null){
System.out.print(reverse.val+" ");
reverse = reverse.next;
}
}
}
class Node{
Node next;
Integer val;
Node last;
Node head;
public void add(Node node){
if(last == null && head == null){
last = node;
head = node;
}else{
last.next = node;
last = node;
}
}
public void getAll(){
Node n = head;
while (n!=null){
System.out.print(n.val+" ");
n = n.next;
}
}
/**
*翻转的方法
使头结点每次后移,直到移动到头结点为空,则翻转完成
* @return
*/
public Node reverse(){
Node pre = null;//存储翻转后的链表的头结点
Node next = null;//存储头结点后面的节点
while(head != null){//原链表的头结点
next = head.next;//存储原链表头结点后面的节点
head.next = pre;//原链表的头节点指向新链表的头结点。
pre = head;//新链表的头结点
head = next;//原链表的头结点后移
}
return pre;
}
}