优选算法_翻转链表_头插法_C++

一.题目解析

算法解析:

结合画图和头插代码就很好理解了

二.代码编写:

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(head==nullptr||head->next==nullptr)return head;

        ListNode*newhead=new ListNode(0);
        ListNode*cur=head;
        while(cur!=nullptr)
        {
            ListNode*next=cur->next;//注意顺序和位置
            cur->next=newhead->next;
            newhead->next=cur;
            cur=next;
        }
        cur=newhead->next;
        delete newhead;
        return cur;
    }
};
相关推荐
卷Java1 小时前
Python字典:键值对、get()方法、defaultdict,附通讯录实战
开发语言·数据库·python
happy_baymax1 小时前
三电平矢量表达式MATLAB实现
开发语言·matlab
xyq20242 小时前
jEasyUI 创建 XP 风格左侧面板
开发语言
赫瑞2 小时前
Java中的最长公共子序列——LCS
java·开发语言
福昕办公2 小时前
C++ 无原生 JSON 支持?一文实现通用序列化与反序列化封装方案
c++
于先生吖2 小时前
零基础开发国际版同城出行平台 JAVA 顺风车预约系统实战教学
java·开发语言
Book思议-2 小时前
【数据结构实战】循环队列FIFO 特性生成六十甲子(天干地支纪年法),实现传统文化里的 “时间轮回”
数据结构·算法·
代码雕刻家2 小时前
2.22.StringBuffer类的常见用法、
java·开发语言
im_AMBER2 小时前
Leetcode 147 零钱兑换 | 单词拆分
javascript·学习·算法·leetcode·动态规划