pisces-data-structure
Version:
43 lines (34 loc) • 1.78 kB
text/typescript
/**
* 队列结构相关接口/类型
*/
import { IList } from "./IList";
// 单向队列接口
interface IQueue<T> extends IList<T> {
enqueue(element: T): void; // 向单向队列尾部添加一个(或多个)新的项
dequeue(): T | undefined; // 移除单向队列的第一(即排在单向队列最前端)项,并返回被移除的元素
front(): T | undefined; // 返回单向队列中第一个元素,单向队列不做任何变动(不移除元素,只返回元素信息)
peek(): T | undefined; // 返回单向队列中第一个元素,单向队列不做任何变动(不移除元素,只返回元素信息)
};
// 双端队列接口
interface IDEQueue<T> extends IQueue<T> {
enqueueFront(element: T): void; // 向双端队列头部添加一个(或多个)新的项
dequeueBack(): T | undefined; // 移除双端队列的最后一项(即排在双端队列最后端的项),并返回被移除的元素
};
// 优先级队列节点接口
interface IPriorityNode<T> {
value: T; // 优先级队列中保存的值
priority: number; // 优先级
valueOf(): number; // 优先级节点进行比较时使用的属性
}
// 优先级队列接口
interface IPriorityQueue<T> extends IList<T> {
enqueue(element: T, priority: number): void; // 向优先级队列尾部添加一个(或多个)新的项
dequeue(): T | undefined; // 移除优先级队列的第一项(即排在优先级队列最前端的项),并返回被移除的元素
peek(): T | undefined; // 返回优先级队列中第一个元素,单向队列不做任何变动(不移除元素,只返回元素信息)
}
export {
IQueue,
IDEQueue,
IPriorityNode,
IPriorityQueue,
};