Ir para conteúdo
Fórum Script Brasil
  • 0

duvida com lista dinamica ordenada


xicobill

Pergunta

alguém poderia me ajudar a descobrir o q tem de errado no meu codigo?!

as vezes quando vou inserir ordenado ele simplesmente fecha...

obrigado..

#include <stdio.h>
#include <stdlib.h>

// Funcoes
void lista();
void primeirolista();
void inserirordenadolista();
void removerlista();
void listarlista();


main(){
       lista();
       
}


//menu para LISTA SIMPLESMENTE ENCADEADA
void lista(){
       
       int ax2=0;
       
       do{
           
           printf("\nLISTA SIMPLESMENTE ENCADEADA\n\n");
           printf("1 - Inserir 1o elemento\n");
           printf("2 - Inserir de forma ordenada\n");
           printf("3 - Remover elemento\n");
           printf("4 - Listar elementos\n");
           printf("5 - Quantidade de elementos\n");
           printf("6 - Alterar o campo string de um determinado no\n");
           printf("7 - Imprimir o 1o elemento\n");
           printf("8 - Voltar ao menu principal\n\n");
           scanf("%d",&ax2);
           switch(ax2){
                        case 1:
                             primeirolista();
                             break;
                        case 2:
                             inserirordenadolista();
                             break;
                        case 3:
                             removerlista();
                             break;
                        case 4:
                             listarlista();
                             break;
                        case 5:
                            
                             break;
                        case 6:
                            
                             break;
                        case 7:
                            
                             break;
                        case 8:
                             // variavel auxiliar recebe 8 e sai do laco
                             ax2 = 8;
                             break;
                        default:;
            }
       }while(ax2 != 8);
}// fim menu para LISTA SIMPLESMENTE ENCADEADA



struct nol{
       int intl;
       char charl[10];
       struct nol *proxl;
} *iniciol, *antl, *auxl;

void primeirolista(){
     if (iniciol == NULL){
         int i;
         char c[10];
         printf("Digite o elemento do campo int: ");
         scanf("%d", &i);
         printf("Digite o elemento do campo char: ");
         scanf("%s", c);
         auxl=(struct nol *) malloc(sizeof(auxl));
         auxl->intl =i;
         strcpy(auxl->charl,c);
         auxl->proxl = NULL;
         iniciol=auxl;
     }else{
           printf("A lista já tem o primeiro no");;
     }
}

void inserirordenadolista(){
     int teste=1;
     int i=0;
     char c[10];
     printf("Digite o elemento do campo int: ");
     scanf("%d", &i);
     printf("Digite o elemento do campo char: ");
     scanf("%s", &c);
     
     if( iniciol->intl  > i){
         auxl=(struct nol *) malloc(sizeof(auxl));
          auxl->intl =i;
          strcpy(auxl->charl,c);
          auxl->proxl = iniciol;
          iniciol = auxl;
          
          
     }else{
          antl = iniciol;
          auxl = iniciol;
          while (auxl != NULL){
                if (auxl-> intl < i){
                   antl = auxl;
                   auxl = auxl->proxl;
                }else{
                      if (auxl-> intl == i){
                         teste = 0;        
                         printf("elemento já esta na lista");
                      }
                         auxl = NULL;            
                }
          }
          if(teste == 1){
              
              auxl=(struct nol *) malloc(sizeof(auxl));
              auxl->intl =i;
              strcpy(auxl->charl,c);
              
              auxl->proxl = antl->proxl;
              antl->proxl = auxl;
          }
          
     }
}



void removerlista(){
     int teste=0;
     int i;
     
     printf("Digite o elemento do campo int: ");
     scanf("%d", &i);
     while (auxl != NULL){
           if (auxl-> intl < i){
              antl = auxl;
              auxl = auxl->proxl;
           }else{
                 if (auxl-> intl == i){
                    teste = 1;          
                 }
                 auxl = NULL; 
           }
     }
     
     if(teste == 1){
              antl->proxl = auxl->proxl;
              auxl = NULL;
              free(auxl);
     }else{
           printf("o elemento não esta na lista");
     }
}

void listarlista(){
     int k;
     if(iniciol== NULL){
                  printf("Lista vazia!!\n");
     }else{
          
           for(auxl = iniciol; (auxl!=NULL); auxl=auxl->proxl){
                    
                    printf("%d\n",auxl->intl);
                    puts(auxl->charl);
                    printf("\n");
           }
     }
}

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...