给一个单向链表,如下图所示,我们要做的是将它的指针反向调转,头做尾,尾做头。
我们需要声明三个指针:pre
、cur
、next
。初始化时,pre
指针指向NULL, cur
指针指向头节点,next
指向头节点的下一个节点。
具体反转的时候,首先cur
指向NULL(cur.next = pre
),然后pre
指向cur
的位置(pre = cur
),cur
指向next
,即cur = next
,next
向前移动。直到cur
指向空的时候停止指针的移动。
所以我们的代码实现就是这样的:
public static Node reverse(Node head) {
Node pre = null;
Node cur = head;
while(cur != null){ // 循环终止的条件是cur指针不为空
Node next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}