using System;
using System.Collections.Generic;
namespace IFramework.Queue
{
///
/// 优先级队列接口
///
/// 队列元素
/// 紧急程度
public interface IPriorityQueue : IEnumerable where TPriority : IComparable
{
///
/// 将优先级节点入队,优先级值小的将会排在队列前面(越小越紧急)
///
void Enqueue(TItem node, TPriority priority);
///
/// 将队列的第一个元素从队列中出队
///
TItem Dequeue();
///
/// 清除队列里的所有元素
///
void Clear();
///
/// 判断队列中是否包含所给元素
///
/// 需要判断是否包含的元素
/// 如果包含则返回true,否则返回false
bool Contains(TItem node);
///
/// 在队列中移除匹配的第一个的所给元素
///
void Remove(TItem node);
///
/// 更新节点元素的优先程度
///
void UpdatePriority(TItem node, TPriority priority);
///
/// 队列的第一个元素
///
TItem first { get; }
///
/// 元素数量
///
int count { get; }
}
}