Descripción del Título
El profesor de matemáticas Xiaoy quiere escribir un sistema de consulta de puntuación, que contiene las siguientes instrucciones:
- inserte [nombre] [puntaje], inserte un mensaje en el sistema, indicando que el puntaje de matemáticas del estudiante cuyo nombre es nombre es puntaje.
- buscar [nombre] significa encontrar la puntuación en matemáticas del estudiante cuyo nombre es nombre.
Tenga en cuenta que algunos estudiantes pueden elegir cursos varias veces para obtener puntos y simplemente dar la puntuación máxima cuando preguntan. El nombre del alumno está compuesto por letras minúsculas. La calificación es un número entero de 0… 100.
El profesor te encontró y quería que lo ayudaras a completar este sistema.
Formato de
entrada Ingrese varias líneas, cada línea tiene la forma de insertar [nombre] [puntaje] o buscar [nombre], o una línea de final significa el final de la entrada. El número de líneas de entrada no es más de 1000 y la longitud del nombre de cada estudiante no es más de 20 caracteres.
Formato de salida
Para cada consulta, dé salida a la puntuación más alta del estudiante consultado Si el estudiante no existe en el sistema, salida −1.
Entrada de muestra
insert zhangsan 90
insert lisi 78
insert xiaoming 86
find xiaoming
find jack
end
Salida de muestra
86
-1
Ideas
Use la estructura para guardar la información del estudiante, compare si la cadena es "insertar" o "buscar" para decidir si insertar o consultar.
Código C ++:
#include<bits/stdc++.h>
using namespace std;
typedef struct Node
{
char name[20];
int score;
struct Node *next;
}Node, *List;
int Init_L(List &L)
{
L = (List)malloc(sizeof(Node));
if(!L)
return 0;
L -> next = NULL;
return 0;
}
bool complare(int a,int b)
{
return a > b;
}
int main()
{
List L;
Init_L(L);
string operate;
string name;
List r, p;
r = L;
while(cin >> operate)
{
if(operate == "end")
break;
else if(operate == "insert")
{
char nam[20];
int sco;
p = (List)malloc(sizeof(Node));
cin >> nam >> sco;
strcpy(p -> name ,nam);
p -> score = sco;
r -> next = p;
r = p;
r -> next = NULL;
}
else if(operate == "find")
{
cin >> name;
List x;
x = L -> next;
int sign = 0, array[10] = {
0}, i = 0, max = 0;
while(x)
{
if(name == x -> name)
{
array[i] = x -> score;
if(max < array[i]) max = array[i];
i++;
sign = 1;
}
x = x -> next;
}
if(sign == 1) cout << max << endl;
if(sign == 0) cout << "-1" << endl;
}
}
return 0;
}