数据结构与算法C#实施系列展示三

数据结构与算法C#实施系列展示三

                   数据结构与算法(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);


 


         }


 


}


tag:算法数据结构系列电脑软件

相关内容