数据结构与算法(C#实现)系列---演示篇(三)

数据结构与算法 (C# 实现 ) 系列 --- 演示篇 ( 三 )

Heavenkiller( 原创 )

public static void ShowSortedList_Polynomial()

{

//100+10x+x^2 + 1+10x+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);

}

}

Published At
Categories with Web编程
Tagged with
comments powered by Disqus