题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
还是老规矩话不多说直接上代码:
class Solution {
public ListNode reverseList(ListNode head) {
ListNode pre = null, next;
ListNode current = head;
while(current != null){
next = current.next;
current.next = pre;
pre = current;
current = next;
}
return pre;
}
}
示意图:
这里我用迭代法来做
链表反转的核心部分,就是把next指向前一个node。但是如果贸然对next改指,又会导致无法找到下一个node,所以在改next指向之前,要把next保护起来,以便以后找到原链表的下一个node。同时,在改指完next之后,要把当前node同样交给pre保护起来,再往下推下一个元素。
以此类推