Preciso desenvolver um código em linguagem c utilizando uma estrutura de dados , onde o mesmo faça a busca a partir de uma numeração digitada pelo usuário e retorne na tela os dados relacionados aquela numeração. precisa deixar os dados armazenados no programa, e assim quando digitar uma numeração específica, por exemplo, retorna na tela o nome e sobrenome referente a ela, o armazenamento precisa ser feito em uma estrutura heterogênea de dados.
Estou tentando implementar utilizando a estrutura de dados do tipo árvore binária(Retirei a maioria da funções) como exemplo o código abaixo:
#include<stdlib.h>
#include<stdio.h>
struct BuscaDados{
int num;
char nome[50];
char sobrenome[50];
struct BuscaDados *direita, *esquerda;
};
int menu();
void Buscar(char nome[50], char sobrenome[50], int num);
int main() {
int op, num, c;
char nome[50];
char sobrenome[50];
ElementoDaArvoreBinaria *root;
root = (ElementoDaArvoreBinaria*)malloc(sizeof(ElementoDaArvoreBinaria));
root = NULL;
while (1) {
op = menu();
switch (op) {
case 1: //Busca os dados
printf("Digite a numeração: ");
scanf_s("%d", &num);
while ((c = getchar()) != '\n' && c != EOF) {} //Limpa o buffer do teclado
Buscar(nome[50], sobrenome[50], num);
break;
case 2:
break;
case 3:
break;
case 4:
return 0;
default:
printf("Opcao invalida!\n");
}
}
return 0;
}
int menu() {
int op, c;
system("cls");
printf("1.Buscar dados do aluno\n");
printf("2.Sair\n");
printf("Escolha uma opcao: ");
scanf_s("%d", &op);
while ((c = getchar()) != '\n' && c != EOF) {} //Limpa o buffer do teclado
system("cls");
return op;
}
void Buscar(int num, char nome[50], char sobrenome[50])
{
if (*ElementoVarredura == NULL)
{
ElementoDaArvoreBinaria *NovoElemento = NULL;
NovoElemento = (ElementoDaArvoreBinaria*)malloc(sizeof(ElementoDaArvoreBinaria));
NovoElemento->esquerda = NULL;
NovoElemento->direita = NULL;
NovoElemento->dado = num;
*ElementoVarredura = NovoElemento;
return;
}
}
if (num < (*ElementoVarredura)->dado)
{
Inserir(&(*ElementoVarredura)->esquerda, num);
}
else
{
if (num > (*ElementoVarredura)->dado)
{
Inserir(&(*ElementoVarredura)->direita, num);
}
}
}
Quais outros parâmetros preciso retirar, mudar? Como armazenar esses dados, por exemplo, nome e sobre, armazenar 10 dados nome e sobrenome, cada dado com sua numeração, Assim ao digitar um numeração rertone suas respectivas informações?