Listas en C/C++

Iniciado por paupperez, 5 Mayo 2017, 13:42 PM

0 Miembros y 1 Visitante están viendo este tema.

paupperez

Hola!

Os comento... Tengo un código que permite cargar una lista de monomios formando un polinomio. La cuestión está en que, una vez cargado el polinomio, debo crear una función que me permita recorrerla para ordenarlo de mayor a menor grado (de x+x^9+x^3 a x^9+x^3+x).

Dejo por aquí la función para cargar el polinomio desordenado:


// Inserta un monomio al principio del polinomio
void inserta_monomio( struct polinomio **pol, float c, int k) {
  struct polinomio* p;     // Variable auxiliar
  p = (struct polinomio*)  // Reserva memoria
      malloc (sizeof(struct polinomio));
  p->coef  = c;            // Guarda el coeficiente
  printf("Coeficiente %d \n",c);
  p->grado = k;            // Guarda el grado
  printf("Grado %d \n",k);
  p->sig = *pol;           // Pone el resto a continuacion
  *pol = p;                // y enlaza el nuevo monomio
                           // al principio del polinomio
}



// Lectura de un polinomio entrado por pantalla
void lee_polinomio_desordenado( struct polinomio **pol) {
float c ;
int g ;
  printf("\n Lectura de polinomio por teclado. Introduzca los monomios : ");
  *pol = NULL ;
  do {
    printf("\n\n Nuevo monomio? (coeficiente nulo para terminar)");
      printf("\n coeficiente: "); scanf("%f", &c);
      if (c != 0) {
  printf(" grado: "); scanf("%d", &g);
      inserta_monomio(pol, c, g) ;  
  }
} while (c != 0) ;
printf("\n\n POLINOMIO LEIDO: ");
  muestra_polinomio(*pol);        // Muestra el polinomio
}


Es importante que se ordene una vez cargado el polinomio, no mientras se va cargando.

Podéis ayudarme? Gracias!!




· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

MAFUS

Tal vez te interese usar la función de biblioteca qsort.