Código
void SistemaInscripcion::insertarPrioridad_2(Alumno* alumno){ Alumno *actual = cabeza_a, *anterior = nullptr; while(actual && compararPorNivelPromedio(alumno, actual)){ anterior = actual; actual = actual->siguiente; } alumno->siguiente = actual; if(anterior) anterior->siguiente = alumno; else cabeza_a = alumno; } void SistemaInscripcion::insertarPrioridad_3(Alumno* alumno){ Alumno *actual = cabeza_a, *anterior = nullptr; while(actual && compararPorCreditosPromedio(alumno, actual)){ anterior = actual; actual = actual->siguiente; } alumno->siguiente = actual; if(anterior) anterior->siguiente = alumno; else cabeza_a = alumno; } void SistemaInscripcion::eliminarLista(){ while(cabeza_a){ Alumno* eliminar = cabeza_a; cabeza_a = cabeza_a->siguiente; delete eliminar; } } void SistemaInscripcion::asignarCupos(SistemaInscripcion* lista_a){ for(Materia* m = cabeza_m; m != nullptr; m = m->siguiente){ SistemaInscripcion lista_t; for(Alumno* a = lista_a->cabeza_a; a != nullptr; a = a->siguiente){ for(auto it : a->materias){ if(it == m->codigo_materia){ if(m->prioridad == 1){ lista_t.insertarPrioridad_1(a); } if(m->prioridad == 2){ lista_t.insertarPrioridad_2(a); } if(m->prioridad == 3){ lista_t.insertarPrioridad_3(a); } } } } lista_t.imprimirListaAlumnos(); lista_t.eliminarLista(); } }