队列的顺序存储

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  interface IQueue<T>
    {
        int GetLength();
        void Clear();
        void EnQueue(T elem);
        void Dequeue();
        T Peek();
        bool IsEmepty();
    }

    class Queue<T> : IQueue<T>
    {
        private T[] data; 
        private int count;//元素个数
        private int maxSize; //数组最大容量
        private int front;//对头下标
        private int rear;// 队尾下标

在这里插入代码片

        public Queue(int maxSize)
        {
            this.maxSize = maxSize;
            data=new T[maxSize]; //开内存分配空间
            front = rear = 0; 
            count =0;
        }
        
        public void Clear()
        {
            front = rear = 0;
            data = null;
        }

在这里插入代码片

        //出队
        public void Dequeue()
        {
            //判断队是否为空
            //移除数据
            //frorn++
            //count
            if (rear==front)
            {
                throw new Exception("队为空无法删除");
            }

            front=(front+1)%maxSize;
            count--;
        }

在这里插入代码片

        //入队
        public void EnQueue(T elem)
        {
            //判断是否已满
            //加入数据
            //rear后移
            //count++
            if ((rear + 1) % maxSize == front)
            {
                throw new Exception("队满无法存储数据");
            }

            data[rear] = elem;
            rear = (rear + 1) % maxSize;
            count++;
        }


在这里插入代码片

        public int GetLength()
        {
            return (rear - front + maxSize) % maxSize;
        }

在这里插入代码片

        public bool IsEmepty()
        {
            return front == rear;
        }

在这里插入代码片

        public T Peek()
        {
            if (rear == front)
            {
                throw new Exception("队为空无法获取数据");
            }

            return data[front];
        }
    }
 class Program
    {
        static void Main(string[] args)
        {
            Queue<int> sum=new Queue<int>(4);
            Console.WriteLine(sum.IsEmepty());
            Console.WriteLine(sum.GetLength());
            sum.EnQueue(100);
            sum.EnQueue(200);
            sum.EnQueue(300);  
            sum.EnQueue(400);
            Console.WriteLine(sum.IsEmepty());
            sum.Dequeue();
            Console.WriteLine(sum.GetLength());
            Console.WriteLine(sum.Peek());
            Console.ReadKey();
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值