我在C中的列表有问题。我必须复制list l1的值(在新的list l2中),其中:l1->e.numero_volte > occ

代码:

list seconda_lista(list l2,list l1, int occ) {
    element temp;
    if(l1!=NULL)
    {
        if(l1->e.numero_volte>occ)
        {
            temp.numero_volte=l1->e.numero_volte;
            strcpy(temp.parola,l1->e.parola);
            l2=cons(l2,temp);
            l2=l2->next;
        }
        seconda_lista(l2,l1,occ);
    }
}


但是程序崩溃了。我怎么解决这个问题?

编辑

我已经更改了代码,但没有开始。

list cons(list l,element el)
{
    list temp;
    temp=(NODO*)malloc(sizeof(NODO));
    temp->e=el;
    temp->next=l;

    return temp;
}

list insord(list l, element el)
{
    if(l==NULL)
    {
        return l=cons(l,el);
    }
    else
    {
        if(strcmp(l->e.parola,el.parola)>0)
        {
            return l=cons(l,el);
        }
        else
        {
            l->next=insord(l->next,el);
        }
        return l;
    }
}

list seconda_lista(list l2,list l1, int occ)
{
    element temp;

    if(l1 != NULL)
    {
        if(l1->e.numero_volte > occ)
        {
            temp.numero_volte=l1->e.numero_volte;
            strcpy(temp.parola,l1->e.parola);
            l2=insord(l2,temp);
        }

        seconda_lista(l2,l1->next,occ);
    }
}

最佳答案

我有零钱,但还没有开始

list cons(list l,element el){
    list temp;
    temp=(NODO*)malloc(sizeof(NODO));
    temp->e=el;
    temp->next=l;

    return temp;
}

list insord(list l, element el){

    if(l==NULL){
        return l=cons(l,el);
    }
    else{
        if(strcmp(l->e.parola,el.parola)>0){
            return l=cons(l,el);
        }
        else{
            l->next=insord(l->next,el);
        }

        return l;
    }
}

list seconda_lista(list l2,list l1, int occ) {
    element temp;
    if(l1 != NULL){

    if(l1->e.numero_volte > occ) {
        temp.numero_volte=l1->e.numero_volte;
        strcpy(temp.parola,l1->e.parola);

        l2=insord(l2,temp);
    }

    seconda_lista(l2,l1->next,occ);

    }
}

关于c - 新列表中C中的副本列表出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31043115/

10-11 22:57
查看更多