使用一个函数

时间:2016-05-24 18:06:14

标签: c linked-list

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"

1 个答案:

答案 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解决方案工作正常。但感谢您的帮助,学到了一两件新事物。