<div>Hola Diego, te dejo un ejemplo con lo que pedis:</div><div></div><div></div><div>#include <stdio.h><br>#include <string.h><br>#include <stdlib.h><br><br>typedef struct _prefijo{<br> int dato0;<br> struct _prefijo *p;<br>
 <br>} *prefijo;<br><br><br>typedef struct _empresa{<br>      char nombre[20];      /*aca guardo el nombre de cada empresa, que no se repetiran*/<br>      prefijo p;     /*esta seria la lista de numeros que tiene esta empresa*/<br>
      struct _empresa *siguiente;   /*puntero a la siguiente empresa*/<br>} *empresa;<br><br>void add_empresa(empresa *e,char *nom)<br>{<br> if(!*e){<br>   *e = (empresa) malloc(sizeof(struct _empresa));<br>       strcpy((*e)->nombre,nom);<br>
        (*e)->siguiente = NULL;<br>    (*e)->p = NULL;<br> }else{<br>   add_empresa(&((*e)->siguiente),nom);<br> }<br>}<br><br>void add_num(empresa e,char *nom,int val)<br>{<br> empresa tmp0 = e;<br> prefijo tmp1;<br>
 if(!e) return;<br> while(strcmp(tmp0->nombre,nom)) <br>         if(tmp0->siguiente) tmp0 = tmp0->siguiente;<br>     else return;<br> if(!(tmp0->p)){<br>     tmp0->p = (prefijo) malloc(sizeof(struct _prefijo));<br>       tmp0->p->dato0 = val;<br>
        tmp0->p->p = NULL;<br> }else{<br>     tmp1 = tmp0->p;<br>    while(tmp1->p) tmp1 = tmp1->p; <br>         tmp1->p = (prefijo) malloc(sizeof(struct _prefijo));<br>       tmp1->p->dato0 = val;<br>   tmp1->p->p = NULL;<br>
 }<br>}<br><br>void show(empresa e)<br>{<br> empresa tmp0 = e;<br> prefijo tmp1;<br> int cont0 = 1;<br> int cont1;<br><br> printf("\n");<br> while(tmp0){<br>         printf("Empresa %d - %s\n",cont0,tmp0->nombre);<br>
        tmp1 = tmp0->p;<br>    cont1 = 1;<br>    while(tmp1){<br>          printf("\tNumero %d - %d\n",cont1,tmp1->dato0);<br>          cont1++;<br>              tmp1 = tmp1->p;<br>    }<br>     printf("\n");<br>       cont0++;<br>      tmp0 = tmp0->siguiente;<br>
 }<br>}<br><br>empresa empresas = NULL;<br><br>int main()<br>{<br> char buff[32];<br> int n,m,i,j,val;<br> printf("Cantidad de empresas: ");<br> scanf("%d",&n);<br> for(i=0;i<n;i++){<br>   printf("\nNombre de la empresa %d: ",i+1);<br>
        scanf("%s",buff);<br>   add_empresa(&empresas,buff);<br>      printf("\nCantidad de numeros para %s:",buff);<br>      scanf("%d",&m);<br>         for(j=0;j<m;j++){<br>          printf("\nIngrese un numero para %s: ",buff);<br>
                scanf("%d",&val);<br>               add_num(empresas,buff,val);<br>   }<br> }<br> show(empresas);<br><br> return 0;<br>}<br></div><div></div><div>Saludos</div><div><br></div>