不能使用数据、集合、栈等 使算法复杂度最小
public class AlgorithmTest {
public static void main(String[] args) {
Node node1 = new Node(1);
Node node2 = new Node(2, node1);
Node node3 = new Node(3, node2);
Node node4 = new Node(4, node3);
Node node5 = new Node(5, node4);
Node node6 = new Node(6, node5);
Node node7 = new Node(7, node6);
print(node7);
Node node = reverse(node7);
print(node);
}
public static Node reverse(Node node) {
if (node == null || node.next == null) {
return node;
}
Node cur = node, pre = null, next;
while (cur != null) {
next = cur.next;
//首次為null
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}
public static void print(Node node) {
while (node != null) {
System.out.print(node.value + " > ");
node = node.next;
}
System.out.println();
}
public static class Node {
public int value;
public Node next;
// 链表的第一个节点,next指针指向空内存
public Node(int i) {
value = i;
next = null;
}
public Node(int i, Node node) {
value = i;
next = node;
}
}
}
输出:
7 > 6 > 5 > 4 > 3 > 2 > 1 >
1 > 2 > 3 > 4 > 5 > 6 > 7 >