3.1.12

上次更新:2019-04-17
发现了题解错误/代码缺陷/排版问题?请点这里:如何:提交反馈

解答

建立类 Item

public class Item<TKey, TValue> : IComparable<Item<TKey, TValue>>
    where TKey : IComparable<TKey>
{
    public TKey Key { get; set; }
    public TValue Value { get; set; }

    public int CompareTo(Item<TKey, TValue> other)
    {
        return this.Key.CompareTo(other.Key);
    }
}

之后修改 BinarySearchST,将其中的 TKey[] keysTValue[] values 数组用 Item[] items 数组代替。
例如 keys[i] 变为 items[i].Keyvalues[i] 变为 items[i].Value

添加一个构造函数,调用之前编写的归并排序实现。

/// <summary>
/// 根据已有的键值对构造一个符号表。
/// </summary>
/// <param name="items">已有的键值对。</param>
public ItemBinarySearchST(Item<TKey, TValue>[] items)
{
    this.items = new Item<TKey, TValue>[items.Length];
    Array.Copy(items, this.items, items.Length);
    this.n = items.Length;
    MergeSort merge = new MergeSort();
    merge.Sort(this.items);
}

另请参阅

Merge 库
SymbolTable 库

上一题 下一题