Código:
Seria crear una nueva funcion que reciba la estructura y que la guarde, no enviaria nada, seria void, puesto que ya acabaria el programa y esta solo se efectuaria a la salida!! Espero alguna ayudita jeje, gracias de todas formas.struct datos { int codigo; char nombre[10]; }; // Estructura que define los datos a manejar por el programa struct nodo { struct datos dato; struct nodo *sig; }; struct nodo * introducir( struct nodo *cabeza); int menu(); void listar(struct nodo *cabeza); void main () { struct nodo *primero=NULL; int opc; do { opc=menu(); switch(opc) { case 1: primero=introducir(primero); break; case 2: listar(primero); break; } }while(opc!=3); } int menu() { int opcion; do { system("cls"); printf("\n\n\t\tMeNu\n"); printf("\n\t1.- ReGisTraR uNa VeNTa."); printf("\n\t2.- LiSTar."); printf("\n\t3.- SaLiR."); printf("\n\n\t\tIntroDuzCa uNa oPCioN... "); scanf("%d",&opcion); if(opcion<=0 || opcion>3) printf("\n\n\tMEEEEEC. 3RR0R"); }while(opcion<=0 || opcion>3); return opcion; } struct nodo *introducir( struct nodo *cabeza) { struct nodo *aux=cabeza; struct nodo *paux; aux=(struct nodo *)malloc(sizeof(struct nodo)); if(aux==NULL) exit(-1); aux->sig=NULL; printf("\nCoDiGo... "); scanf("%d",&aux->dato.codigo); fflush(stdin); printf("\nNomBre... "); scanf("%10[^\n]", &aux->dato.nombre); if(cabeza==NULL) cabeza=aux; else { paux=cabeza; while(paux->sig!=NULL) { paux=paux->sig; } paux->sig=aux; } return cabeza; } void listar(struct nodo *cabeza) { struct nodo *paux; // --> Se crea puntero auxiliar paux=cabeza; // --> Se igualan ambos. Esto se hace para recorrer con el // puntero y no el parametro cabeza. /*( Proceso... Como recorrer un puntero)*/ while(paux!=NULL) { //(1). Si puntero aux es != nuLL... // Visualizo los datos de la venta registrados en el nodo paux printf("\n\n\t...ProDuCTo...\n\n"); printf("\nCoDiGo.... %d",(paux->dato).codigo); printf("\nNoMBre.. %s",(paux->dato).nombre); //(2). Avanzo un nodo... paux=paux->sig; } return; }
Saludos