leetcode第二题两数相加,总是提示我第二十四行(红色那一行),指针指向不完整的结构体类型

熊猫果茶 2018-05-30 01:03:11
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
int power(int a)
{
int result=1;
while(a!=1)
{
result=result*10;
a--;
}
return result;
}
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
struct listNode* current1=NULL,* l3=NULL,*current2=NULL,*current3=NULL;
int sum1=0,sum2=0,sum3,i=1;
current1=l1;
while(current1!=NULL)
{
sum1=sum1+(current1->val)*power(i);
current1=current1->next;
i++;
}
curren2t=l2;
i=1;
while(current2!=NULL)
{
sum2=sum2+(current2->val)*power(i);// Line 24: dereferencing pointer to incomplete type 'struct listNode'就是这里
current2=current2->next;
i++;
}
sum3=sum1+sum2;
i=1;
current3=NULL;
while(sum3%10!=0)
{
current3=malloc(sizeof(struct ListNode));
current3->val=sum3%power(i);
if(i==1)
l3=current3;
current3=current->next;
i++;
sum3=sum3/10;
}
return l3;
}
...全文
1022 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
godop 2018-05-30
  • 打赏
  • 举报
回复
可能是你哪里实现错了,你再仔细找找看 这是我的ac代码

    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        if(l1==NULL||l2==NULL)
            return NULL;
        ListNode *res=new ListNode((l1->val+l2->val)%10);
        ListNode *cur=res;
        int flag=0;
        if(l1->val+l2->val>=10)
            flag+=1;
        l1=l1->next;
        l2=l2->next;
        while(l1&&l2){
            int s=l1->val+l2->val+flag;
            flag=0;
            if(s>=10){
                flag++;
                s%=10;
            }
            ListNode *tmp=new ListNode(s);
            cur->next=tmp;
            cur=cur->next;
            l1=l1->next;
            l2=l2->next;
        }
        while(l1){
            int a=l1->val+flag;
            ListNode *tmp=new ListNode((a)%10);
            cur->next=tmp;
            cur=cur->next;
            flag=0;
            if(a>=10)
                flag+=1;
            l1=l1->next;
            
        }
        while(l2){
            int a=l2->val+flag;
            ListNode *tmp=new ListNode((a)%10);
            cur->next=tmp;
            cur=cur->next;
            flag=0;
            if(a>=10)
                flag+=1;
            l2=l2->next;
        }
        if(flag){
            ListNode *tmp=new ListNode(flag);
            cur->next=tmp;
        }
        return res;
    }
熊猫果茶 2018-05-30
  • 打赏
  • 举报
回复
引用 1楼自信男孩 的回复:
curren2t=l2;   //注意这儿多了一个t,是current2后面多了一个t
    i=1;
    while(current2!=NULL)
    {
        sum2=sum2+(current2->val)*power(i);// Line 24: dereferencing pointer to incomplete type 'struct listNode'就是这里
        current2=current2->next;
        i++;
    }
那个问题解决了,现在问题是我返回的l3它只读出来一个结点的数,怎么把后面的数也读出来
自信男孩 2018-05-30
  • 打赏
  • 举报
回复
curren2t=l2;   //注意这儿多了一个t,是current2后面多了一个t
    i=1;
    while(current2!=NULL)
    {
        sum2=sum2+(current2->val)*power(i);// Line 24: dereferencing pointer to incomplete type 'struct listNode'就是这里
        current2=current2->next;
        i++;
    }

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧