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");
}
}
}