思路 题目要求反转链表,可以简单用三个元素的关系进行分析。head,head的前一个元素(pre),head的后一个元素(next)。反转前,pre -> head -> next;反转后,pre <- head <- next。反转链可以这样进行操作:pre <- head,将head.next指向pre,但是考虑到直接简单这样指向会发生断链的情况,所以在指向之前必须用next暂存head.next。此后head.next成为新的head,依次重复,即可完成整个链的反转。
代码(JAVA)
publicclassSolution{publicListNodeReverseList(ListNode head){if(head==null)returnnull;ListNode pre =null;//head前一个结点ListNode next =null;//head后一个结点while(head!=null){//没有遍历到最后一个结点,执行循环
next = head.next;//暂存head指向的后一个结点,防止断链
head.next = pre;//反转链
pre = head;//后移,反转后面的链
head = next;}return pre;//循环遍历结束pre会到需要反转的最后一个结点位置,输出pre即可输出反转后的链表}}