use*_*235 18 java algorithm linked-list data-structures singly-linked-list
Node reverse(Node head) {
Node previous = null;
Node current = head;
Node forward;
while (current != null) {
forward = current.next;
current.next = previous;
previous = current;
current = forward;
}
return previous;
}
Run Code Online (Sandbox Code Playgroud)
究竟是如何扭转名单的呢?我知道它首先将第二个节点设置为forward.然后它说current.next等于一个null节点previous.然后它说previous现在current.最后current成为forward?
我似乎无法掌握这一点以及它的逆转方式.有人可以解释这是如何工作的吗?
您迭代地反转列表,并且始终使间隔 [head, previous] 中的列表正确反转(因此当前是其链接未正确设置的第一个节点)。在每个步骤中,您都执行以下操作:
如果对所有节点都这样做,则可以证明(例如通过归纳法)列表将被正确反转。