Cliente insert_last_adq(int option,Viagem global,Cliente adq,Cliente esp,int data,char *destino,int cod_destino,int id,char *nome){
/*FIX: Caso quando full*/
Cliente new_node = (Cliente) malloc( sizeof(Clientes_node) );
Cliente adq_orig = adq;
Cliente esp_orig = esp;
new_node->data=data;
new_node->cod_destino=cod_destino;
new_node->id=id;
strcpy(new_node->destino,destino);
strcpy(new_node->nome,nome);
switch( option ){
case 0:
if(adq==NULL){
new_node->next=NULL;
if(option==0){
diminuir_disp(global,data,cod_destino);
}
return new_node;
} else if( get_viagens_disp_destino(global,data,cod_destino) > 0 ){
while(adq->next!=NULL){
adq=adq->next;
}
adq->next=new_node;
new_node->next=NULL;
diminuir_disp(global,data,cod_destino);
return adq_orig;
} else if( get_viagens_disp_destino(global,data,cod_destino)==0 ){
/*FIX: Not workin*/
if(esp==NULL){
new_node->next=NULL;
esp=new_node;
}else{
while(esp->next!=NULL){
esp=esp->next;
}
esp->next=new_node;
new_node->next=NULL;
return adq_orig;
}
}
break;
case 1:
if(esp==NULL){
new_node->next=NULL;
return new_node;
}else{
while(esp->next!=NULL){
esp=esp->next;
}
esp->next=new_node;
new_node->next=NULL;
return esp_orig;
}
break;
}
}
评论FIX:不工作后,我有一行:
esp=new_node;
所以我的目标是给链表的起始地址esp指定new_node的地址。 我知道如果我返回一个地址,我可以改变这个,但问题是adq链表将是收到返回值的那个。
Btw esp是一个指向结构,以及adq,所以没有" *"需要。 adq和esp属于同一类型" Cliente"
答案 0 :(得分:0)
我只是在params中添加了一个整数。我将其设置为0或1,具体取决于我要将返回值设置为的列表。然后我刚刚使用的函数:
if(out_int==0){
adq=return_pCliente;
}else if(out_int==1){
esp=return_pCliente;
}
out_int在函数的参数中作为int * out_int传递,因此可以在函数内部进行更改。 其余代码不需要进行任何更改。我在时钟上,所以tmy解决方案工作正常。但感谢您的帮助,学到了一两件新事物。