#include #include typedef struct celula{ int numero; struct celula *prox; }celula; typedef struct lista{ struct celula *ini; }lista; void insere (int x,lista c){ celula *p; p=c.ini; while(p->prox!=NULL) p = p-> prox; celula *nova; nova = malloc (sizeof (celula)); nova->numero = x; nova->prox = NULL; p->prox = nova; } void novalista(lista c){ c.ini=malloc(sizeof (celula)); c.ini->prox=NULL; } void transfere(lista c, int potencia,lista d,lista e,lista f,lista g,lista h,lista i,lista j,lista k,lista l,lista m){ celula *q; int cont, res; q=c.ini->prox; while(q!=NULL){ cont=q->numero; res=cont%potencia; res=res/(potencia/10); if(res==0) insere(cont,d); if(res==1) insere(cont,e); if(res==2) insere(cont,f); if(res==3) insere(cont,g); if(res==4) insere(cont,h); if(res==5) insere(cont,i); if(res==6) insere(cont,j); if(res==7) insere(cont,k); if(res==8) insere(cont,l); if(res==9) insere(cont,m); q=q->prox; } } void apagar(lista c) { celula *morta; morta = c.ini->prox; while (c.ini->prox!=NULL){ if (morta->prox == NULL) c.ini->prox = NULL; else c.ini->prox = morta->prox; free (morta); } } void concatena(lista c,lista d){ celula *p=c.ini; while(p->prox!=NULL) p = p-> prox; p->prox=d.ini->prox; } int algarismos(lista c){ celula *q; int cont, res, fim = 1, potencia=10; q=c.ini->prox; while(fim!=0){ fim=0; while(q!=NULL){ cont=q->numero; res=cont/potencia; if(res!=0) fim=1; potencia=potencia*10; break; return potencia; } } } void prin(lista c) { celula *q; for (q = c.ini->prox; q != NULL; q = q->prox) printf ("%d\n", q->numero); } int main (){ int fim, a = 0, potencia=10 ; printf("Digite os numeros que deseja organizar, em seguida digite '-1':\n"); lista inicial,ini0,ini1,ini2,ini3,ini4,ini5,ini6,ini7,ini8,ini9; novalista(inicial); novalista(ini0); novalista(ini1); novalista(ini2); novalista(ini3); novalista(ini4); novalista(ini5); novalista(ini6); novalista(ini7); novalista(ini8); novalista(ini9); while(a!=-1){ scanf("%d", &a); if (a!=-1) insere(a,inicial); } fim=algarismos(inicial); while (potencia