0
点赞
收藏
分享

微信扫一扫

刷题力扣206-反转链表

题意:反转一个单链表。

示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL

思路1:双指针法

刷题力扣206-反转链表_递归

主要就是将原来正序的箭头掉转一个方向,可以用pre来指向最末为的null值,cur指向head节点,需要注意的是,在断开箭头之前,需要写个temp临时节点用来存储cur.next , 然后指针后移。当cur指向null时,循环结束

class Solution {
public ListNode reverseList(ListNode head) {
ListNode pre = null;
ListNode cur = head;
ListNode temp = null; //临时指针用于保存cur的next节点
while(cur != null){
temp = cur.next;
pre= cur.next;
pre = cur;
cur = temp;
}
return pre;
}
}


思路2:递归法

可以模仿双指针的思路写递归

 //递归
class Solution {
public ListNode reverseList(ListNode head) {
return reverse(head,null);
}

public ListNode reverse(ListNode cur,ListNode pre){
if(cur == null) return pre;
ListNode temp = null;
temp = cur.next;
cur.next = pre;
return reverse(temp,cur);
}
}

举报

相关推荐

0 条评论