1.问题描述
2.解决办法
1.迭代
在遍历链表时,将当前节点的 next 指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。
所以我们定义pre 指向前一个节点并定义为null, 定义一个next指向下一个节点,如果当前结点不为空,则先将该节点的下一个节点暂存到新定义的next(非常重要,要不无法往后继续),然后讲该节点的next指向pre,以此pre和新定义next往后推,直到head等于null。
3.代码实现
class Solution {
public ListNode reverseList(ListNode head) {
ListNode pre = null;
ListNode next = null;
while (head != null) {
next = head.next;
head.next = pre;
pre = head;
head = next;
}
head=pre;
return pre;
}
}