关于C#的优先队列

本文作者分享了在实习期间自学C#高级编程时,对书中优先队列内容的理解和实践。作者基于双向链表实现了一个优先队列类,并希望得到社区的反馈和帮助,同时也期待这个实现能对他人有所帮助。
摘要由CSDN通过智能技术生成

最近在实习期间学习《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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值