我是菜鸟,当我在做Leetcode21.TwoSortedListsLists

我是菜鸟,当我在做Leetcode 21. Merge Two Sorted Lists我提交了这段代码:

/**
 * 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* mergeTwoLists(ListNode* list1, ListNode* list2) {
        p1 = list1;

图片[1]-我是菜鸟,当我在做Leetcode21.TwoSortedListsLists-唐朝资源网

p2 = list2; while (p1 && p2) { if (p1->val val) { p->next = p1; p1 = p1->next; } else if (p2->val val) { p->next = p2; p2 = p2->next; } p = p->next; } if (!p1) { p->next = p2; } if (!p2) { p->next = p1; } return head->next; } private: ListNode* p1, p2; ListNode* head = new ListNode(-101); ListNode* p = head; };

但出现编译错误:

error: no viable overloaded '='
        p2 = list2;

图片[2]-我是菜鸟,当我在做Leetcode21.TwoSortedListsLists-唐朝资源网

~~ ^ ~~~~~

还有:

this->p1 = list1;
this->p2 = list2;

得到同样的错误信息。但是在我将错误代码(在mergeTwoLists()函数内)修改为:

ListNode* p1 = list1;
ListNode* p2 = list2;

代码可以通过测试用例,没有出现错误。

Q1:我想知道为什么要为这样的指针赋值实现operator “=”(p1或p2是ListNode*类型和list1和list2也是ListNode*类型) 问题。

Q2:也有人可以根据错误信息告诉我如何实现operator “=”(可以通过测试用例)吗?

Q3:或者如果有其他解决方案(除了我上面的修改并实现operator=)这个编译错误消息(可以通过测试用例)。

谢谢!

© 版权声明
THE END
喜欢就支持一下吧
点赞40赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容