C#队列 (数组实现)

C# 队列 (使用数组实现)

在这里插入图片描述

队列的实现

首先定义队列的类

在这里插入图片描述

然后是两个基础的方法(入队,出队)

出队
在这里插入图片描述
入队
在这里插入图片描述
扩容的方法
在这里插入图片描述

然后是测试

在这里插入图片描述

最后是全部的代码

using System;

namespace ConsoleApp18
{
    class Program
    {
        static void Main(string[] args)
        {
            MyQueue<int> queue=new MyQueue<int>();
            queue.Enqueue(1);
            queue.Enqueue(2);
            queue.Enqueue(3);
            queue.Enqueue(4);
            queue.Enqueue(5);
            queue.Enqueue(6);
            queue.Enqueue(7);
            queue.Enqueue(8);
            queue.Enqueue(9);
            queue.Enqueue(10);
            queue.Enqueue(11);

            while (queue.Count!=0)
            {
                Console.WriteLine(queue.Dequeue());
            }
            Console.ReadKey();
        }
    }

    class MyQueue<T>
    {
        private T[] queues;
        private int first;
        private int list;
        private int size = 5;//默认的长度为5

        /// <summary>
        /// 构造函数来初始化长度
        /// </summary>
        public MyQueue()
        {
            queues=new T[size];
        }

        /// <summary>
        /// 队列中的元素数量
        /// </summary>
        public int Count
        {
            get
            {
                return first;
            }
        }

        /// <summary>
        /// 出队
        /// </summary>
        /// <returns></returns>
        public T Dequeue()
        {
            if (first != 0)
            {
                first--;
                return queues[list++];
            }
            else
            {
                throw new Exception("队列为空");
            }
        }

        /// <summary>
        /// 入队
        /// </summary>
        /// <param name="item"></param>
        public void Enqueue(T item)
        {
            if (Count<size)
            {
                
                queues[first++] = item;
            }
            else
            {
                //扩容
                Enlarge();
                queues[first++] = item;
            }
        }

        /// <summary>
        /// 扩容
        /// </summary>
        private void Enlarge()
        {
            //扩容二倍
            T[] tmpArr=new T[queues.Length*2];
            for (int i = 0; i < queues.Length; i++)
            {
                tmpArr[i] = queues[i];
            }
            queues = tmpArr;
            //size也要变为2倍
            size *= 2;
        }
    }
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值