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();
//出队列
}
}
}
按照优先级的排序,进行队列的输出
队列优先级输出
最新推荐文章于 2023-11-10 21:49:37 发布