Red de conocimiento informático - Aprendizaje de código fuente - Puntero del categorizador

Puntero del categorizador

# include & ltstdio.h & gt

# 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;

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)

{

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.