Red de conocimiento informático - Computadora portátil - 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.

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>

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;

}

}