反转链表
【反转链表】《剑指offer》面试题24:输入一个链表,反转链表后,输出新链表的表头。
思路:反转链表就是将链表中每一个节点的next指针域指向它的前一个节点,而当next指针域指向前一个节点之后,它的后一个节点就找不到了,所有在改变指向前需要先记录它的后一个节点。新链表的表头就是原链表的表尾。
代码如下:
public ListNode reverseList(ListNode head) {
ListNode reverseHead = null;
ListNode curNode = head;
ListNode preNode = null;
while (curNode != null) {
// 记录当前节点的下一个节点
ListNode nextNode = curNode.next;
// 当前节点的下一个节点为空则当前节点为新链表的表头
if (nextNode == null) {
reverseHead = curNode;
}
curNode.next = preNode;
preNode = curNode;
curNode = nextNode;
}
return reverseHead;
}
推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长