反转链表一般有两种方式
1、将链表中的每个节点取出,使用头插法建立一个新的链表
2、采用递归的方式进行反转。
头插法反转链表
package train;
public class 反转链表 {
public class Node {
public Node next;
public int data;
public Node (int value) {
this.data = value;
}
public void revert (Node head){
if (head==null){
return;
}
Node cur = null;
Node next = null;
while(head.next != null){
next = head.next;
head.next = cur;
cur = head;
head = next;
}
}
}
}
递归的方法进行反转链表
以此类推
package train;
public class 反转链表 {
public class Node {
public Node next;
public int data;
public Node (int value) {
this.data = value;
}
public Node revert(Node head){
//链表为空或者走到了最后一个节点
if (head==null||head.next==null){
return head;
}
Node newhead = revert(head.next);
//反转节点
head.next.next = head;
head.next = null;
return newhead;
}
}
}