我在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/