/// <summary> /// 获取堆的迭代器,元素以降序排列。 /// </summary> /// <returns></returns> public IEnumerator <Key> GetEnumerator() { MaxPQ <Key> copy = new MaxPQ <Key>(this.n); for (int i = 1; i <= this.n; i++) { copy.Insert(this.pq[i]); } while (!copy.IsEmpty()) { yield return(copy.DelMax()); // 下次迭代的时候从这里继续执行。 } }
/// <summary> /// 获取堆的迭代器,元素以降序排列。 /// </summary> /// <returns>最大堆的迭代器。</returns> public IEnumerator <Key> GetEnumerator() { var copy = new MaxPQ <Key>(n); for (var i = 1; i <= n; i++) { copy.Insert(pq[i]); } while (!copy.IsEmpty()) { yield return(copy.DelMax()); // 下次迭代的时候从这里继续执行。 } }