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; }
}