剑指 Offer 24. 反转链表

2020-08-11  本文已影响0人  bangbang2
image.png
image.png

首先来说,需要定义两个指针:pre=null 和cur=head;
cur指向当前节点
主要思路:
while循环,循环条件cur!=null
1:next=cur.next;//就是来记录当前节点的下一个节点,因为一会要断开cur.next
2:cur.next=pre;//pre代表的就是前面已经反转的链表,cur.next代表的是将cur也加入已经反转的链表中
3:pre=cur;//pre向前来移动
4:cur=next;//cur向前移动

image.png
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
          ListNode l1=new ListNode();
          ListNode l2=null;//必须为空,不能为空节点,不然会多出一个0
          ListNode cur=head;
          while(cur!=null){
              l1=cur.next;
              cur.next=l2;//cur的下一个指向l2
              l2=cur;//往前移动
              cur=l1;//往前移动
          }
          return l2;
    }
}
上一篇下一篇

猜你喜欢

热点阅读