您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 6数据结构(C#)实验报告
河南财经政法大学2013年---2014年第二学期院系:计算机与信息工程学院专业:信息管理与信息系统课程名称:数据结构(C#)班级:姓名:学号:指导教师:景丽实验报告《数据结构(C#)》实验报告河南财经政法大学第1页共41页实验一Collections类的定义实验目的1掌握Collections类的定义方法实验内容1为Collections类添加Insert、Contains、IndexOf、RemoveAt方法,并设计测试用例实验数据记录及分析(或程序及运行结果)usingSystem;usingSystem.Collections;publicclassCollection:CollectionBase{publicvoidAdd(Objectitem){InnerList.Add(item);}publicvoidRemove(Objectitem){InnerList.Remove(item);}publicnewvoidClear(){InnerList.Clear();}publicnewintCount(){returnInnerList.Count;}publicvoidInsert(intindex,Objectitem){InnerList.Insert(index,item);}publicboolContains(Objectitem){returnInnerList.Contains(item);}《数据结构(C#)》实验报告河南财经政法大学第2页共41页publicintIndexOf(Objectitem,intstartindex,intcont){returnInnerList.IndexOf(item,startindex,cont);}publicnewvoidRemoveAt(intindex){InnerList.RemoveAt(index);}publicvoidDisplay(Collectionitems){Console.WriteLine();foreach(Objectiteminitems){Console.WriteLine(item);}}classchapter1{staticvoidMain(){Collectionnames=newCollection();names.Add(David);names.Add(Bernica);names.Add(Raymond);names.Add(Clayton);//foreach(Objectnameinnames)//{//Console.WriteLine(name);//}names.Display(names);names.Insert(2,AB);names.Display(names);Console.WriteLine(names.Contains(AB));Console.WriteLine(names.IndexOf(AB,0,names.Count()-1));names.RemoveAt(2);names.Display(names);Console.WriteLine(Numberofnames:+names.Count());names.Remove(Raymond);Console.WriteLine(Numberofnames:+names.Count());names.Clear();《数据结构(C#)》实验报告河南财经政法大学第3页共41页Console.WriteLine(Numberofnames:+names.Count());Console.Read();}}}运行结果:评语:日期:年月日《数据结构(C#)》实验报告河南财经政法大学第4页共41页实验二程序运行时间Timing类测试实验目的1理解程序运行时间的统计方法,教材中的Timing类实验内容1请使用Timing类来比较向Collections类、一般数组和ArrayList分别添加了1000000个整数时的性能实验数据记录及分析(或程序及运行结果)测试时间类:publicclassTiming{TimeSpanduration;publicTiming(){duration=newTimeSpan(0);}publicvoidstopTime(){duration=Process.GetCurrentProcess().TotalProcessorTime;}publicvoidstartTime(){GC.Collect();GC.WaitForPendingFinalizers();}publicTimeSpanResult(){returnduration;}}Collections类:publicclassCollection:CollectionBase{publicvoidAdd(Objectitem){InnerList.Add(item);}《数据结构(C#)》实验报告河南财经政法大学第5页共41页publicvoidInsert(intindex,Objectitem){InnerList.Insert(index,item);}publicvoidDisplay(Collectionitems){Console.WriteLine();foreach(Objectiteminitems){Console.WriteLine(item);}}publicobjectthis[intindex]//索引器{get//获取指定索引的元素值{if((index0)||(index=this.InnerList.Capacity)){thrownewArgumentOutOfRangeException(index,索引超出范围);}returnthis.InnerList[index];}set//设置指定索引的元素值{if((index0)||(index=this.InnerList.Capacity)){thrownewArgumentOutOfRangeException(index,索引超出范围);}this.InnerList[index]=value;}}}备注:基于CollectionBase的Collection具有foreach功能,但是无法使用索引器,通过该方法可以具有索引功能publicclassAB{staticvoidMain(){Collectionnums=newCollection();//ArrayListnums=newArrayList();for(inti=0;i10;i++)《数据结构(C#)》实验报告河南财经政法大学第6页共41页nums.Add(i);for(inti=0;i10;i++)Console.Write(nums[i]+);nums[2]=1000;Console.WriteLine();foreach(objectkinnums)Console.Write(k+);Console.Read();}}测试程序运行结果是:向一般数组添加了1000000个整数的时间测试程序及结果classchapter1{staticvoidMain(){int[]nums=newint[100000];TimingtObj=newTiming();tObj.startTime();for(inti=0;i100000;i++)nums[i]=i;tObj.stopTime();Console.WriteLine(数组添加元素所需时间+tObj.Result().TotalSeconds);Console.Read();}}向Collections类添加了1000000个整数的时间测试程序及结果staticvoidMain(){Collectionnums=newCollection();TimingtObj=newTiming();tObj.startTime();for(inti=0;i100000;i++)nums.Add(i);tObj.stopTime();《数据结构(C#)》实验报告河南财经政法大学第7页共41页Console.WriteLine(Collections类添加元素所需时间+tObj.Result().TotalSeconds);Console.Read();}向动态数组添加了1000000个整数的时间测试程序及结果staticvoidMain(){ArrayListnums=newArrayList();TimingtObj=newTiming();tObj.startTime();for(inti=0;i100000;i++)nums.Add(i);tObj.stopTime();Console.WriteLine(ArrayList类添加元素所需时间+tObj.Result().TotalSeconds);Console.Read();}分析:向数组、Collection类、ArrayList添加数据所用时间大致相同。如果采用下面的测试方式:classchapter1{staticvoidMain(){int[]nums=newint[100000];TimingtObj=newTiming();tObj.startTime();for(inti=0;i100000;i++)nums[i]=i;tObj.stopTime();Console.WriteLine(数组添加元素所需时间+tObj.Result().TotalSeconds);Collectionnums1=newCollection();tObj.startTime();for(inti=0;i100000;i++)nums1.Add(i);《数据结构(C#)》实验报告河南财经政法大学第8页共41页tObj.stopTime();Console.WriteLine(Collections类添加元素所需时间+tObj.Result().TotalSeconds);ArrayListnums2=newArrayList();tObj.startTime();for(inti=0;i100000;i++)nums2.Add(i);tObj.stopTime();Console.WriteLine(ArrayList类添加元素所需时间+tObj.Result().TotalSeconds);Console.Read();}}倒换测试程序顺序:staticvoidMain(){TimingtObj=newTiming();Collectionnums1=newCollection();tObj.startTime();for(inti=0;i100000;i++)nums1.Add(i);tObj.stopTime();Console.WriteLine(Collections类添加元素所需时间+tObj.Result().TotalSeconds);int[]nums=newint[100000];tObj.startTime();for(inti=0;i100000;i++)nums[i]=i;tObj.stopTime();Console.WriteLine(数组添加元素所需时间+tObj.Result().TotalSeconds);ArrayListnums2=newArrayList();tObj.startTime();for(inti=0;i100000;i++)nums2.Add(i);tObj.stopTime();Console.WriteLine(ArrayList类添加元素所需时间+tObj.Result().TotalSeconds);Console.Read();}测试结果:《数据结构(C#)》实验报告河南财经政法大学第9页共41页分析:从以上两种测试看,Timing类记录时间是逐渐累加,所以测试程序运行时间
本文标题:6数据结构(C#)实验报告
链接地址:https://www.777doc.com/doc-5845057 .html