Clasificación de puntajes de estudiantes de lenguaje C Ingrese los puntajes de n estudiantes de acuerdo con sus números de serie y genere la clasificación, el número de serie y el puntaje de los estudiantes en orden de puntajes más altos a más bajos.
#include?lt;stdio.hgt;
#include?lt;malloc.hgt;
typedef?struct?student
{
int?id;
int?score;
struct?student?*next;
}STU; p>
p>
int?stuIndex;
void?inputStuInfo(STU?*stuHead);//Ingrese la información del estudiante
void?orderStuInfo(STU?* stuHead);// Reorganiza la lista vinculada en orden de puntajes más altos a más bajos
void?printStuInfo(STU?*stuHead, int?flag); //Imprime la información del estudiante. Bandera de parámetro = 0: imprime la información de la lista vinculada normalmente.
flag!=0: imprime la información de clasificación ordenada
int?main()
{
STU?*stuHead=(STU?*)malloc( sizeof (STU));
stuHead-gt; next=NULL;
stuIndex=1;
inputStuInfo(stuHead);
printf("--¡Imprime la lista enlazada de entrada original!--\n");
printStuInfo(stuHead, 0);
printf("--Comienza a ordenar en orden descendente por puntuación! --\n");
orderStuInfo(stuHead);
printf("--¡La lista enlazada se reorganiza en orden descendente!--\n");
printf("--¡Imprime la lista enlazada ordenada en orden descendente!--\n");
printStuInfo(stuHead, 1);
return ?0;
}
void?orderStuInfo(STU?*stuHead)
{
STU?*stuSave1=NULL, * stuSave2=NULL, stuSave3;
p>stuSave1=stuHead;
while(stuSave1-gt; next!=NULL)//clasificación de burbujas
{
stuSave2=stuSave1 -gt; siguiente;
mientras(stuSave2-gt; siguiente!=NULL)
{
if(stuSave1 -gt; next-gt; scorelt; stuSave2-gt; next-gt; score)// Intercambia valores de miembros y conserva el valor del puntero de la lista vinculada original
{
stuSave3. =*(stuSave1-gt; siguiente);
stuSave1-gt;siguiente-gt;id=stuSave2-gt;siguiente-gt;id;
stuSave1-gt;siguiente- gt;score=stuSave2-gt;next-gt;score ;
stuSave2-gt;next-gt;id=stuSave3.id;
stuSave2-gt;next-gt; puntuación=stuSave3.score;
}
stuSave2=stuSave2-gt;siguiente;
}
stuSave1=stuSave1-gt; siguiente;
}
}
void?printStuInfo(STU?*stuHead, int?flag)
{
int?i=1;
while(stuHead-gt; next!=NULL)
{
if(flag==0)
printf("Estudiante d, puntuación d\n", stuHead-gt; next-gt; id, stuHead-gt; next-gt; puntuación
else
printf("No. d, estudiante d, puntuación d\n", i, stuHead-gt; next-gt; id, stuHead-gt; next-gt; puntuación
); cabeza de estuco=
stuHead-gt;siguiente;
}
}
void?inputStuInfo(STU?*stuHead)
{
int?score;
STU?*stuNew=NULL, *stuTail=NULL;
mientras(1)
{
printf("Ingrese la puntuación del estudiante d: (ingrese un número negativo para finalizar la entrada)", stuIndex
scanf("d", amp; puntuación
<); p>if(scorelt ;0)break;
stuNew=(STU?*)malloc(sizeof(STU));
stuNew-gt; puntuación=puntuación;
stuNew-gt; id=stuIndex;
stuNew-gt; siguiente=NULL
if (stuHead-gt; siguiente== NULL)
stuHead-gt; next=stuNuevo;
else
stuTail-gt; siguiente=stuNuevo;
stuTail=stuNuevo ;
stuIndex;
}
}