Multilista

Clasificado en Informática

Escrito el en español con un tamaño de 2,8 KB

 

Multilista Multilista::SumarMatrizEscazaABEnC(Multilista A,Multilista B)

{    int i,k,pos;

     Nodo x,y;

     Multilista C;

      C=B;

      if(!A.MultilistaVacia())

      {     i=A.Primero();

             i=A.ProximoDerecha(i);

             do

             {     k=A.ProximoAbajo(i);

                   while(k!=A.FinDeMultilista(i))

                  {     x=A.Multilista(k);

                        if(B.BuscarIgual(x,pos))

                        {      y=B.Multilista(pos);

                               y.DatoValor(y.DatoValor()+x.DatoValor());

                              C.Multilista(pos,y);

                        }

                       else

                       {       C.Insertar(x);    }

                       k=A.ProximoAbajo(k);

                  }

                  i=A.ProximoDerecha(i);

             }

       while(i!=A.FinDeMultilista());

     }

return C;

}



bool Multilista::BuscarIgual(Nodo x,int & pos)

{       int i,k;

         pos=-1;

          if(!this->MultilistaVacia())

          {   i=this->Primero();

              i=this->ProximoDerecha(i);

              do

             {       k=this->ProximoAbajo(i);

                    while(k!=this->FinDeMultilista(i) && pos==-1)

                    {        if( (this->Lista(k).DatoFila()==x.DatoFila())

                              && (this->Lista(k).DatoColumna()==x.DatoColumna()) )

                             { pos=k; } else { k=this->ProximoAbajo(k);     }

                    }

                      i=this->ProximoDerecha(i);

             }     while(i!=this->FinDeMultilista() && pos==-1);

             return true;

             } else { return false; }

}