版权声明:本文为博主原创文章,转载希望能注明出处,感谢。 https://blog.csdn.net/u010126792/article/details/82427092
链表反转java:
public class Demo12 {
public static void main(String[] args) {
Node node1 = new Node(1, null);
Node node2 = new Node(2, null);
Node node3 = new Node(3, null);
Node node4 = new Node(4, null);
Node node5 = new Node(5, null);
Node node6 = new Node(6, null);
Node node7 = new Node(7, null);
node1.next= node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
node5.next = node6;
node6.next = node7;
node7.next = null;
Node newnode = reverse1(node1);
System.out.println(newnode.index);
}
public static Node reverse1(Node node) {
if (node == null || node.next == null) {
return node;
}
Node nodecurr = node;
Node nodepre = null;
while (nodecurr != null) {
Node next = nodecurr.next;
nodecurr.next = nodepre;
nodepre = nodecurr;
nodecurr = next;
}
return nodepre;
}
public Node reverse2(Node node, Node prev) {
if (node.next == null) {
node.next = prev;
return node;
} else {
Node re = reverse2(node.next, node);
node.next = prev;
return re;
}
}
}
class Node {
int index;
Node next;
public Node(int index, Node next) {
this.index = index;
this.next = next;
}
}
原理解释看图:
上图是非递归算法的思路,把前一个节点指向当前节点的下一个节点。
递归算法的思路类似,找到最后一个节点,它的next等于null,则把前一个节点作为它的next节点。