Você está na página 1de 3

#include <iostream>

#include <string>

using namespace std;

struct Aluno {
string nome;
int matricula;
Aluno* prox;
};

Aluno* criarLista() {
return nullptr;
}

Aluno* criaNo(string nome, int matricula) {


Aluno* aux = new Aluno;
aux->nome = nome;
aux->matricula = matricula;
aux->prox = nullptr;
return aux;
}

Aluno* incluiAL(Aluno* cab, string nome, int matricula) {


Aluno* aux = criaNo(nome, matricula);
aux->prox = cab;
return aux;
}

Aluno* removeAL(Aluno* cab, int matricula) {


Aluno* anterior = nullptr;
Aluno* atual = cab;

while (atual != nullptr) {


if (atual->matricula == matricula) {
if (anterior == nullptr) {
cab = atual->prox;
} else {
anterior->prox = atual->prox;
}
delete atual;
return cab;
}
anterior = atual;
atual = atual->prox;
}
cout << "Matrícula não encontrada." << endl;
return cab;
}

Aluno* buscaPorMatricula(Aluno* cab, int matricula) {


Aluno* p = cab;
while (p != nullptr) {
if (p->matricula == matricula) {
return p; // Retorna o aluno com a matrícula especificada
}
p = p->prox;
}
return nullptr; // Matrícula não encontrada
}

void imprimeL(Aluno* cab) {


Aluno* p = cab;
while (p != nullptr) {
cout << "Nome: " << p->nome << endl;
cout << "Matrícula: " << p->matricula << "\n" << endl;
p = p->prox;
}
}

int main() {
Aluno* cab = criarLista();
string nome;
int matricula;
char resp;
Aluno* alunoEncontrado = nullptr; // Declare antes do switch

do {
cout << "\n\tMenu" << endl;
cout << "\t1 - Inserir no final da lista." << endl;
cout << "\t2 - Buscar aluno por matrícula." << endl;
cout << "\t3 - Imprimir a lista." << endl;
cout << "\t4 - Remover da lista." << endl;
cout << "\t5 - Sair." << endl;
cin >> resp;

switch (resp) {
case '1':
do {
cout << "\nDigite o nome e a matrícula:" << endl;
cin.ignore();
getline(cin, nome);
cin >> matricula;
cab = incluiAL(cab, nome, matricula);
cout << "Continua a adicionar alunos? (s/n): ";
cin >> resp;
} while (resp == 's' || resp == 'S');
break;
case '2':
cout << "\nDigite a matrícula a ser buscada:" << endl;
cin >> matricula;
alunoEncontrado = buscaPorMatricula(cab, matricula); //
Atribua dentro do case 2
if (alunoEncontrado != nullptr) {
cout << "Aluno encontrado:\n";
cout << "Nome: " << alunoEncontrado->nome << endl;
cout << "Matrícula: " << alunoEncontrado->matricula
<< endl;
} else {
cout << "Aluno com a matrícula não encontrado." <<
endl;
}
break;
case '3':
imprimeL(cab);
break;
case '4':
cout << "\nDigite a matrícula a ser removida:" << endl;
cin >> matricula;
cab = removeAL(cab, matricula);
break;
default:
cout << "Opção inválida. Tente novamente." << endl;
}
} while (resp != '5');

return 0;
}

Você também pode gostar