[leetcode]206. 反转链表

1.题目:
反转一个单链表。

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

2.代码:

非递归:

# 非递归
# res是返回头部,用cur遍历链表,把cur加到链首,并将res指向cur
class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        cur, res = head, None
        while cur is not None:
            next = cur.next
            cur.next = res
            res = cur
            cur = next
        return res

递归:

//递归法: h为反转后的链表头,一直都是不变的。
//链表递归回来就是反向遍历,把自己的next节点的next指向自己就实现了反转
struct ListNode* reverseList(struct ListNode* l) {
    if(l==NULL||l->next==NULL) 					//一般情况有l->next==NULL找到最后一个节点就够了,但还有[]情况。
        return l;
    struct ListNode* h=reverseList(l->next);
    l->next->next=l;
    l->next=NULL;								//不改的话反转之后尾节点的next指向它上一个,不是NULL;
    return h;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值