力扣:206. 反转链表
秉持着:涉及到链表的操作,在纸上把过程先画出来。动图如下:
定义两个指针:pre和 current;pre 在前current在后。
每次让pre的next指向current,实现一次局部反转
局部反转完成之后,pre和current同时往前移动一个位置
循环上述过程,直至pre到达链表尾部
代码如下:
ListNode pre;
ListNode current;
public ListNode reversePrint(ListNode head) {
pre = head;
current = null;
while (pre != null){
ListNode temp = pre.next;
pre.next = current;
current = pre;
pre = temp;
}
return current;
}
链表反转还有几种解法:
2、使用辅助栈,利用栈的FILO,先进后出的方式实现反转