数据结构与算法(c#实现)系列—演示篇(三)
heavenkiller(原创)
public static void showsortedlist_polynomial()
{
//100+10*x+x^2 + 1+10*x+100x^2
sortedlist tmplista=new sortedlist();
sortedlist tmplistb=new sortedlist();
sortedlist tmplistc=new sortedlist();//used to store the result
sortedlist tmpkeylist=new sortedlist();//used to store all keys of two polynomials
//init polynomial a and show it
tmplista.add(0,100);
tmplista.add(1,10);
tmplista.add(2,1);
showsortedlist_showpolynomial("tmplista",tmplista.getenumerator());
//init polynomial b and show it
tmplistb.add(0,1);
tmplistb.add(1,10);
tmplistb.add(2,100);
showsortedlist_showpolynomial("tmplistb",tmplistb.getenumerator());
//init the key list which contains all keys of a and b but everyone once
idictionaryenumerator tmpidic=tmplista.getenumerator();
while(tmpidic.movenext()!=false)
{
if(!tmpkeylist.containskey(tmpidic.key))
{
tmpkeylist.add(tmpidic.key,null);
}
}
tmpidic=tmplistb.getenumerator();
while(tmpidic.movenext()!=false)
{
if(!tmpkeylist.containskey(tmpidic.key))
{
tmpkeylist.add(tmpidic.key,null);
}
}
//add a and b and show the result
tmpidic=tmpkeylist.getenumerator();
while(tmpidic.movenext()!=false)
{
object obja=null,objb=null,objc=null;
objc=tmpidic.key;
if(tmplista.containskey(objc))
obja=tmplista[objc];
if(tmplista.containskey(objc))
objb=tmplistb[objc];
//objc=obja+objb;
//tmpkeylist[objc]=(int)obja+(int)objc;
tmplistc.add(objc,(int)obja+(int)objb);
}
showsortedlist_showpolynomial("the addition result of a and b",tmplistc.getenumerator());
}
public static void showsortedlist_showpolynomial(string tip,idictionaryenumerator idic)
{
string strexpress=null;
idic.reset();
while(idic.movenext()!=false)
{
strexpress+=idic.value.tostring()+"*x^"+idic.key.tostring()+"+";
}
console.writeline(tip+":"+strexpress);
}
}
