TnodoPila* duplicarRec(TNodoPila*act)

Anuncio
Void duplicar(TPila<T>*&pila){
_cima = duplicarRec( _cima );
}
TnodoPila<T>* duplicarRec(TNodoPila<T>*act){
If (act = = NULL) return null;
Else{
TNodoPila<T>*aux;
aux= TNodoPila<T>(act->elem());
aux->_sig=act;
duplicarRec( act->sig() );
return aux;
}
}
Es un algoritmo voraz luego pasa una vez por cada valor original: Coste=n
Class TAsignatura{
Public:
-----------------------Private:
TNombre asignatura;
TGrupo grupo;
TProfesor profesor;
(pareja<nombreAlum,nota>*)*_listaAlumnos;
Int tope;
}
Class Talumno{
Public:
--------------------------Private:
TNombreAlumno nombreAlum;
TNota nota;
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Void TAsignatura<TElem>::insertar( const TAlumno& alumno){
//PRE: Array ordenado por orden alfabético de nombre de los alumnos
if (tope==max) throw EAccesoIndebido(“ Clase esta llena ”);
else {
bool enc=false;
int i=0;
while((!enc)&&(i<tope)){
if (_listaAlumnos[i]->primero() > alumno){
for (int j=tope;j>i;j--){_listaAlumnos[j]= _listaAlumnos[j-1];}
Enc=true;
}
_listaAlumnos[i++]=alumno;
}
}
//POST: Si tope = MAX entonces error array lleno(clase esta llena). Devuelve el //array
con los alumnos insertados y matriculados en una asignatura.
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Void TAsignatura<TElem>::suprimir ( const TAlumno& alumno){
//PRE: Array ordenado por orden alfabético de nombre de los alumnos
Bool encontrado=false; int posición;
buscarAlumno(alumno,encontrado,posicion);
if (encontrado) {
for (int j=posicion;i>tope;i++){_listaAlumnos[i]= _listaAlumnos[i+1];}
}
}
Void TAsignatura<TElem>:: buscarAlumno(const TAlumno& alumno , bool& enc ,int& pos);
buscarAlumnoRec(a,enc,pos,0,tope-1);
}
Void TAsignatura<TElem>:: buscarAlumnoRec(const TAlumno& alumno , bool& enc ,int&
pos, int inicio, int fin);
If (inicio>fin) throw EAI(“Vacia”);
Else{
Int medio=(inicio+fin)/2;
If ((_listaAlumnos[medio]->primero() == a) {enc=true; pos=medio;}
Else {
If ((_listaAlumnos[medio]->v1() > a)
{ buscarAlumnoRec( a , enc ,pos, 0, medio-1);}
Else { buscarAlumnoRec( a , enc ,pos, medio+1, fin);}
}
}
}
char * convertir (char * v, int T){
Pila <char *> p =new Pila<char *>;
for (int i=0;i<T;i++){
if esoperando(v[i]){
car[T] aux;
inicializa(aux);
aux[0]=v[i];
p.apila(aux);
} else {
char[T] aux = p.desapila();
char[T] aux2 = p.desapila();
strcpy (aux,'(',aux,v[i],aux2,')');
p.apila(aux);
}
return p.desapila(aux);
}
}
Descargar