public class ReverseLinkedList {
@Test
public void test() {
System.out.println("======================================");
ReverseLinkedList reverseLinkedList = new ReverseLinkedList();
reverseLinkedList.insert(2);
reverseLinkedList.insert(234);
reverseLinkedList.insert(2345);
reverseLinkedList.insert(23456);
System.out.println("====================================== "+reverseLinkedList.insert(234567));
reverseLinkedList.show();
System.out.println("======================================");
reverseLinkedList.insertHead(new Node(1));
reverseLinkedList.show();
System.out.println("======================================");
reverseLinkedList.reverse();
reverseLinkedList.show();
System.out.println("======================================");
}
class Node {
int data;
Node next = null;
public Node(int data) {
this.data = data;
}
}
Node head = null;
int size = 0;
public int insert(int data) {
Node temp = new Node(data);
if (head == null) {
head = temp;
return ++size;
}
Node currentHead = head;
while (currentHead.next != null) {
currentHead = currentHead.next;
}
currentHead.next = temp;
return ++size;
}
public void insertHead(Node node) {
if(head==null){
head = node;
return;
}
Node temp = head;
node.next = temp;
head = node;
}
public void show(){
Node current = head;
while (current!=null){
System.out.println("current = "+current.data);
current = current.next;
}
}
public void reverse(){
Node current = head;
if(current==null){
return;
}
while (current.next!=null){
//臨時保存要移動的node的next
Node temp = current.next.next;
//要移動的node放到鏈表最前端
insertHead(current.next);
//頭結點指向移動後的node的next
current.next = temp;
}
}
}