2.4.21 #
解答 #
给元素添上序号组成结点,按照序号排序即可,每个结点可以用类似于这样的实现:
class ElemType<T> : IComparable<ElemType<T>>
{
private int _key;
private T _element;
public ElemType(int key) => _key = key;
public int CompareTo(ElemType<T> other)
{
return _key.CompareTo(other._key);
}
}
栈:
用最大元素在最前的优先队列。
每个结点都包含一个元素和一个序号,
插入新元素时序号递增,这样最后插入的元素总在最前。
队列:
用最小元素在最前的优先队列。
每个结点都包含一个元素和一个序号,
插入新元素时序号递增,这样最先插入的元素总在最前。
随机队列:
优先队列的选择任意
每个结点都包含一个元素和一个序号,
插入新元素时随机指定一个序号,这样元素的顺序就是任意的了。