//******************************************************************* //* Libreria: Lista siplemente ligada con objetos con sus miembros //* Version: 1.0 //* Programa: lista.hpp //* fecha: 29 de Septiembre de 2005 //******************************************************************* #include class nodo { public: //Las sig variables se usan para funciones double x; double fx; //Las sig variables se usan para matrices int i,j; nodo *sig; }; typedef nodo *pnodo; class lista : public nodo { public: lista(){nactual=NULL;ntemp=NULL;ninicial=NULL;}; void inserta(double , double ); //Usada para funciones void inserta(int , int , double ); //Usada para matrices void muestra(void); int busca(double ); int busca(int,int); //Usada para matrices pnodo nactual, ntemp, ninicial; }; //******************************************************************* //******************** Definicion de miembros *********************** //******************************************************************* void lista::inserta(double x, double fx) { if (ninicial==NULL) { ninicial = new(nodo); ninicial->sig = NULL; ninicial->x = x; ninicial->fx = fx; nactual = ninicial; } else { ntemp = new(nodo); ntemp->sig = NULL; ntemp->x = x; ntemp->fx = fx; nactual->sig = ntemp; nactual = ntemp; } } //********************************************************** void lista::inserta(int i, int j, double x) //Usada para matrices { if (ninicial==NULL) { ninicial = new(nodo); ninicial->sig = NULL; ninicial->i = i; ninicial->j = j; ninicial->x = x; nactual = ninicial; } else { ntemp = new(nodo); ntemp->sig = NULL; ntemp->i = i; ntemp->j = j; ntemp->x = x; nactual->sig = ntemp; nactual = ntemp; } } //********************************************************** void lista::muestra(void) { ntemp = ninicial; //La siguiente linea se debe de cambiar por una varible global if((ninicial->i != 0) && (ninicial->j != 0) && (ninicial->fx != 0)) { while(ntemp!=NULL) { cout << "A[" << ntemp->i << "][" << ntemp->j << "]=" << ntemp->x << endl; ntemp = ntemp->sig; } } else { while(ntemp!=NULL) { cout << "x: " << ntemp->x << ", "; cout << "f(x): " << ntemp->fx << ", " << endl; ntemp = ntemp->sig; } } } //********************************************************** int lista::busca(double x) { int bandera = 0; ntemp = ninicial; while(ntemp!=NULL && !bandera) { if(ntemp->x == x) bandera = 1; else ntemp = ntemp->sig; } nactual = ntemp; return bandera; } //********************************************************** int lista::busca(int i, int j) { int bandera = 0; ntemp = ninicial; while(ntemp!=NULL && !bandera) { if(ntemp->i == i && ntemp->j == j) bandera = 1; else ntemp = ntemp->sig; } nactual = ntemp; return bandera; }