最近在实习期间学习《C#高级编程》看到了书上讲到多优先级队列,产生了兴趣,然后在网上百度了许多C#的多优先级队列,基本都是用数组什么的,而书上使用的是双向链表。但是书上的优先队列没有写全,我通过自己的琢磨理解之后写了一个优先队列类。希望各位大佬帮忙看看,多谢。同时,希望能够对一些需要的人产生一丢丢作用。
话不多说,上代码。
这是优先队列的类
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PriorityQueueWinform
{
class PriorityQueue<T> : IEnumerable<PriorityItem<T>> where T : IComparable<T>, IEquatable<T>
{
//创建链表和节点集合
private LinkedList<PriorityItem<T>> _linkedList;
private List<LinkedListNode<PriorityItem<T>>> _firstNodeList;
private List<LinkedListNode<PriorityItem<T>>> _lastNodeList;
//返回多优先级队列的长度
public int Count { get { return _linkedList.Count; } }
//返回最大优先级
public int MaxPriority { get; private set; }
//返回优先级是否从大到小
public bool IsDesc { get; private set; }
//重载构造函数
public PriorityQueue() : this(10, true)
{ }
public PriorityQueue(int priority) : this(priority, true)
{ }
public PriorityQueue(bool isDesc) : this(10, isDesc)
{ }
public PriorityQueue(int priority, bool isDesc)
{
MaxPriority = priority;
IsDesc = isDesc;
_linkedList = new LinkedList<Prio