《数据结构与算法: C#语言描述》第1章读书笔记
在这本书第一章的1.2.1节中结构的示例代码(请参见网址:http://book.51cto.com/art/200905/123578.htm)可能需要修改,因为奇怪的是:属性写了却没用到。将其中的ToString()重写方法和Initials()方法改为:
public override string ToString() { return (String.Format("{0} {1} {2}", firstName, middleName, lastName)); } public string Initials() { return (String.Format("{0} {1} {2}", firstName.Substring(0, 1), middleName.Substring(0, 1), lastName.Substring(0, 1))); }
在上面的示例代码片断中,fname改为firstName,mname改为middleName,lname改为lastName。这样的程序修改后实现了直接在该结构内调用它的属性,通过后面的new 结构的构造函数赋属性值。
接下来,在1.3.3节中程序的Count方法应由方法修改为属性,而不应使用方法。
public int Count { get { return InnerList.Count; } }
Count部分的示例代码片断
Console.WriteLine("Number of names: " + names.Count); names.Remove("David"); Console.WriteLine("Number of names: " + names.Count); names.Clear(); Console.WriteLine("Number of names: " + names.Count);
Main()方法部分的示例代码片断
Count的输出结果为:4,3,0。这样的程序修改后才是真正的实现Collection类。
在1.7节练习 第2题:请为Collection类添加Insert方法、Contains方法、IndexOf方法、RemoveAt方法。
public void Insert(int index, object item) { InnerList.Insert(index, item); } public bool Contains(object item) { return InnerList.Contains(item); } public int IndexOf(object item) { return InnerList.IndexOf(item); } public int IndexOf(object item, int startIndex) { return InnerList.IndexOf(item, startIndex); } public int IndexOf(object item, int startIndex, int count) { return InnerList.IndexOf(item, startIndex, count); } public void RemoveAt(int index) { InnerList.RemoveAt(index); }
练习第3题:请使用Timing类来比较向Collection类和ArrayList类分别添加了1 000 000个整数时的性能。
using System; class TestDemo { static void BuildArray(Collection arr) { for (int i = 0; i <= 1000000; i++) { arr.Add(i); } } static void DisplayNums(Collection arr) { foreach(int i in arr) { Console.Write(i + " "); } } static void Main(string[] args) { Collection nums = new Collection(); BuildArray(nums); Timing obj = new Timing(); obj.startTime(); DisplayNums(nums); obj.stopTime(); Console.WriteLine("Time: " + obj.Result.TotalSeconds); } }
上面的程序运行结果为:
这是 Collection 类的程序实现。ArrayList类的程序实现与之类同,本贴文略过不写了。