反转链表

【反转链表】《剑指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; }

    推荐阅读