Puntero del categorizador
# include & ltstdlib.h & gt
# include & ltmalloc.h & gt
#Definición número 10
Estructura Estudiante
{
Fracción flotante;
Estructura Estudiante*Siguiente;
};
p>
// Crea una tabla de claves unidireccionales y devuelve el encabezado de la lista vinculada.
struct Student * creat link(struct Student * head, int n)
{
int I;
struct Student *p1 , * p2
cabeza = p 1 =(struct Student *)malloc(tamaño de(struct Student));
if(p1 == NULL)
{
printf("Memoria insuficiente, no se puede asignar el búfer\n ");
System("pausa");
Exit(1); * Finalizar el programa cuando no haya memoria suficiente*/
}
scanf("%f ", & amp(p 1->; score));
p 1->siguiente = NULL
for(i = 2;i<=n;i++)
{
p2 = p 1;< / p>
p1=(struct estudiante*)malloc(sizeof(struct estudiante));
if(p1 == NULL)
{
printf("Memoria insuficiente, no se puede asignar el búfer\n ");
Sistema ("pausa");
Salir (1); * /
}
scanf("%f ", & amp(p 1->; puntuación)
p 1->; NULL // El siguiente nodo del nodo generado recientemente apunta a nulo.
p2->;siguiente = p 1;
}
Devolver encabezado;
}
/ /Muestra los miembros de una lista circular enlazada.
void DisplayLink(struct Student * header)
{
struct Student * p
p = encabezado
;Hacer
{
printf("%.1f ", p-& gt; puntuación);
p = p-& gt; ;
} while(p!= NULL); //Cuando p es igual a head nuevamente, se atraviesan todos los miembros.
printf(" \ n \ n ");
}
//Seleccione el método de clasificación para ordenar la lista vinculada
Estructura Estudiante *Ordenar enlace (struct Student *head)
{
struct Student *head2=NULL, *p1, *p2, *p1lst, *p2lst, *q; p>
flotar MaxScore
mientras (cabeza!=null)
{
p2 = p 1 =cabeza;
puntuación máxima = cabeza->puntuación;
mientras(p1!=null)
{
if(p 1->puntuación>MaxScore)
p>{
puntuación máxima = p 1-> puntuación;
p2lst = p 1 lst;
p2 = p 1;< / p>
}
p 1 primero = p 1;
p 1 = p 1->; p>if(p2==cabeza)
{
cabeza = cabeza-& gt; siguiente
}
Otro
{
p2lst->siguiente = p2-& gt; siguiente;
}
if(head2== NULL) p>
{
cabeza2 = q = p2
}
Otros
{
q ->;siguiente = p2
q = q-& gt;Siguiente;
}
}
q->; = NULL
Devolver cabeza2
}
//Calcular tasa de aprobación
float CalculatePassRatio(estructura estudiante*cabeza)
{
int I = 0;
struct Estudiante * p;
p = cabeza
mientras (p! =null)
{
if (p->puntuación>60)i++;
p = p->
return((float)I/N);
}
int main(int argc, char *argv[])
{
int n;
Estructura estudiante *head;
printf("Ingrese %d Fuente:\n ", N);
head=CreatLink(head, N);
printf("El recurso que ingresaste:\n ");
DisplayLink(head);
head = sort link(head);
printf("Los resultados ordenados son los siguientes:\ n ");
DisplayLink(head);
printf("tasa de aprobación%.2f\%%\n\n ", calcular la proporción de aprobación(cabeza)* 100);
Gratis(cabeza
Sistema (" pausa");
Devuelve 0;
}
Aunque parece un poco largo, usa una lista vinculada. Puedes aprender cómo hacerlo. Lo inventé yo mismo, no es una respuesta estándar.