2.4.21

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);
	}
}

栈:

用最大元素在最前的优先队列。

每个结点都包含一个元素和一个序号,

插入新元素时序号递增,这样最后插入的元素总在最前。

队列:

用最小元素在最前的优先队列。

每个结点都包含一个元素和一个序号,

插入新元素时序号递增,这样最先插入的元素总在最前。

随机队列:

优先队列的选择任意

每个结点都包含一个元素和一个序号,

插入新元素时随机指定一个序号,这样元素的顺序就是任意的了。