<!--打赏 End-->

队列

    class Program
    {
        enum DigitType { ones=1,tens=10}
        static void DisplayArray(int[] n)
        {
            for (int i = 0; i <= n.GetUpperBound(0); i++)
            {
                Console.Write(n[i]+" ");
            }
            Console.WriteLine();
        }

        static void Rsot(Queue[] que,int[] n,DigitType digit )
        {
            int snum;
            for (int i = 0; i <= n.GetUpperBound(0); i++)
            {
                if (digit==DigitType.ones)
                {
                    snum = n[i] % 10;
                }
                else
                {
                    snum = n[i] / 10;
                }
                que[snum].Enqueue(n[i]);
            }
        }

        static void BuildArray(Queue[] que,int[] n)
        {
            int y = 0;
            for (int i = 0; i <=9; i++)
            {
                while (que[i].Count>0)
                {
                    n[y] = Int32.Parse(que[i].Dequeue().ToString());
                    y++;
                }
            }
        }
        static void Main(string[] args)
        {
            Queue[] numQueue=new Queue[10];
            int[] nums = new int[] { 91,46,85,15,92,35,31,22,1,12};
            for (int i = 0; i < 10; i++)
            {
                numQueue[i] = new Queue();
            }
            DisplayArray(nums);

            Rsot(numQueue,nums,DigitType.ones);
            BuildArray(numQueue,nums);
            DisplayArray(nums);

            Rsot(numQueue,nums,DigitType.tens);
            BuildArray(numQueue,nums);
            DisplayArray(nums);
            Console.ReadLine();
        }
    }
View Code

优先队列

    public struct ProcessStruct
    {
        public int priority;
        public string name;
    }
    public class PQueue : Queue
    {
        public PQueue() { }
        public override object Dequeue()
        {
            object[] items;
            int min;
            items = this.ToArray();
            min = ((ProcessStruct)items[0]).priority;
            for (int i = 1; i <=items.GetUpperBound(0); i++)
            {
                if (((ProcessStruct)items[i]).priority<min)
                {
                    min = ((ProcessStruct)items[i]).priority;
                }
            }
            this.Clear();
            for (int i = 0; i <=items.GetUpperBound(0); i++)
            {
                if (((ProcessStruct)items[i]).priority == min && ((ProcessStruct)items[i]).name!="")
                {
                    this.Enqueue(items[i]);
                }
            }
            return base.Dequeue();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            PQueue ewait = new PQueue();
            ProcessStruct[] ps=new ProcessStruct[4];
            ps[0].name = "aaa";
            ps[0].priority = 1;
            ps[1].name = "bbb";
            ps[1].priority = 1; 
            ps[2].name = "ccc";
            ps[2].priority =2;
            ps[3].name = "DDD";
            ps[3].priority = 3;
            for (int i = 0; i < ps.Length; i++)
            {
                ewait.Enqueue(ps[i]);
            }
            Console.WriteLine(""+((ProcessStruct)ewait.Dequeue()).name);
            Console.ReadLine();
        }
    }
View Code

 

posted @ 2017-11-20 21:47  mikefts  阅读(115)  评论(0编辑  收藏  举报