me pueden ayudar con este codigo en C, no se xq me sale violacion de segmento, gracias de antemano
#include<stdio.h>
#include<stdlib.h>
int main(){
typedef struct lista{
char nombre[30];
int monto;
struct lista *puntero;
}Nodo;
int opcion,i=5;
Nodo *l1,*l2,*l3;
l2=l1;
l3=l1;
while(opcion!=5){
printf("1.- Insertas nuevos nombres y montos\n");
printf("2.- Eliminar nombres y montos\n");
printf("3.- Imprimir nombres y montos\n");
printf("4.- Ordenar por montos\n");
printf("5.- Salir\n");
scanf("%d",&opcion);
if(opcion==1){
while(i>0){
gets(l1->nombre);
scanf("%d",&l1->monto);
l1->puntero = (Nodo*) malloc(sizeof(Nodo));
l1=l1->puntero;
i--;
}
}
if(opcion==2){
}
if(opcion==3){
while(l3->puntero != NULL){
printf("%s %d",l3->nombre,l3->monto);
l3=l3->puntero;
}
l3=l2;
}
if(opcion==4){
}
}
return 0;
}
#include<stdio.h>
#include<stdlib.h>
int main(){
typedef struct lista{
char nombre[30];
int monto;
struct lista *puntero;
}Nodo;
int opcion,i=5;
Nodo *l1,*l2,*l3;
l2=l1;
l3=l1;
while(opcion!=5){
printf("1.- Insertas nuevos nombres y montos\n");
printf("2.- Eliminar nombres y montos\n");
printf("3.- Imprimir nombres y montos\n");
printf("4.- Ordenar por montos\n");
printf("5.- Salir\n");
scanf("%d",&opcion);
if(opcion==1){
while(i>0){
gets(l1->nombre);
scanf("%d",&l1->monto);
l1->puntero = (Nodo*) malloc(sizeof(Nodo));
l1=l1->puntero;
i--;
}
}
if(opcion==2){
}
if(opcion==3){
while(l3->puntero != NULL){
printf("%s %d",l3->nombre,l3->monto);
l3=l3->puntero;
}
l3=l2;
}
if(opcion==4){
}
}
return 0;
}