You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

反转链表时出现no viable overloaded '='错误,求原因解析

反转链表代码中的赋值错误分析与修复

错误根源在变量声明行:

ListNode* current,prev,next;

在C++语法中,*仅绑定到紧跟的变量current,因此prev和next被声明为ListNode类型的普通对象,而非指针。但current->next返回的是ListNode*指针类型,将指针赋值给普通对象时,编译器找不到匹配的赋值运算符,于是抛出no viable overloaded '='错误。

修正后的代码

只需将prev和next也声明为指针即可,同时推荐用C++标准的nullptr替代NULL,类型安全性更高:

/**
 * 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) {
        ListNode *current, *prev, *next;
        prev = nullptr;
        current = head;
        while(current != nullptr){
            next = current->next;
            current->next = prev;
            prev = current;
            current = next;
        }
        head = prev;
        return head;
    }
};

内容的提问来源于stack exchange,提问作者Gourav kr Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 02:03:20