leetcode 206 反转链表

本文介绍了一种简单有效的单链表反转方法。通过定义前驱节点pre、当前节点head及后续节点temp,实现链表节点指向的反转。最终返回反转后的链表头结点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

反转一个单链表。

示例:

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

这道题的思路是如果要反转链表 ,我们首先得要考虑三个位置,一个是前面得位置,我们叫它pre,一个是当下得,我们叫它head,一个是之后得,它的位置当然是 head->next啦  ,我们所要做的就是将当前的位置的next值指向pre即可,也就是 head->next=pre;   然后head依次往后移,移后呢 ,pre变成谁了呢,肯定是head啦 ,那么当前元素变成谁了呢,肯定是head->next   也就是 head=head->next了,不过第一次head->nex=pre时,head->next发生了改变,所以要让一个变量保存它

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode *pre=nullptr;
        while(head)
        {
            ListNode *temp=head->next;
            head->next=pre;
            pre=head;
            head=temp;
        }
        return pre;
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值