《数据结构与算法: 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类的程序实现与之类同,本贴文略过不写了。

posted on 2009-05-18 23:20  豆豆の爸爸  阅读(766)  评论(0编辑  收藏  举报