队列优先级输出

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace ConsoleApplication1
{
    class Program
    {
        public struct pqItem
        {   //结构体
            public int priority;
            public string name;
        }
        public class PQueue:Queue
        {   //重新构造队列
            public PQueue() { }
            public override object Dequeue()
            {   //出队列
                object[] item;
                item = this.ToArray();//将传入的队列转化为数组

                int min = ((pqItem)item[0]).priority;//获取优先级
                for (int i = 1; i <= item.GetUpperBound(0); i++)
                {
                    if (((pqItem)item[i]).priority < min)
                    { 
                        min=((pqItem)item[i]).priority;
                    }
                }

                this.Clear();//队列清楚
                Queue qu = new Queue();

                for (int i = 0; i <= item.GetUpperBound(0); i++)
                {
                    if (((pqItem)item[i]).priority == min && ((pqItem)item[i]).name != "")
                    {
                        qu.Enqueue(item[i]);                        
                    }
                    else
                    {
                        this.Enqueue(item[i]);
                    }
                }   
                    
                   return qu.Dequeue();//弹出原来的队列                   
            }
        }
        static void Main(string[] args)
        {
            PQueue pation = new PQueue();
            pqItem[] item = new pqItem[3];
            item[0].name = "james";
            item[0].priority = 2;
            item[1].name = "kkk";
            item[1].priority = 1;
            item[2].name = "kase";
            item[2].priority = 3;
            for (int i = 0; i <= item.GetUpperBound(0); i++)
                pation.Enqueue(item[i]);

           Console.WriteLine(((pqItem)pation.Dequeue()).name);
           Console.WriteLine(((pqItem)pation.Dequeue()).name);
           Console.ReadKey();
            //出队列
        }
    }
}
按照优先级的排序,进行队列的输出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值