数据结构与算法(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);
}
} |
温馨提示:喜欢本站的话,请收藏一下本站!