链表的反转
思路是将第一个结点作为基准结点先分离出来,之后的节点往此节点前面插入,头部插入法,依次之后就得到了链表的反转结果啦,用两个指针分别指向两边当前处理到的位置。
public class Main {
public static void main(String[] args) {
Node header = new Node(null);
Node node1 = new Node(7);
Node node2 = new Node(6);
Node node3 = new Node(5);
Node node4 = new Node(4);
Node node5 = new Node(3);
Node node6 = new Node(2);
Node node7 = new Node(1);
header.next = node1;
node1.next = node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
node5.next = node6;
node6.next = node7;
//起初左边部分只有第一个节点 ,右边部分是一节点之后的节点
Node left = node1,right = node2;
left.next = null;
Node tail = null;
//遍历右边部分节点,依次插入到左边,完成反转
Node tempNode;
while(right != null){
tail = right;
tempNode = right.next;
right.next = left;
left = right;
right = tempNode;
}
while(tail != null){
System.out.println(tail);
tail = tail.next;
}
}