• 大小: 26KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: C#
  • 标签:

资源简介

使用C#使用循环队列,压缩包里包含源代码以及测试类。

资源截图

代码片段和文件信息

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

namespace CircleQueue
{
    /// 
    /// 循环队列
    /// binnerLee
    /// 2015年1月4日
    /// 

    /// 
    public class MyCircleQueue
    {
        /// 
        /// 队列数组
        /// 

        private T[] _queue;
        /// 
        /// 队首索引
        /// 

        private int _front;
        /// 
        /// 队尾索引
        /// 

        private int _rear;
        
        /// 
        /// 队列的内存大小,但实际可用大小为_capacity-1
        /// 

        private int _capacity;

        public MyCircleQueue(int queueSize)
        {
            if (queueSize < 1)
                throw new IndexOutOfRangeException(“传入的队列长度不能小于1。“);

            //设置队列容量
            _capacity = queueSize;
            
            //创建队列数组
            _queue = new T[queueSize];

            //初始化队首和队尾索引
            _front = _rear = 0;
        }

        /// 
        /// 添加一个元素
        /// 

        /// 
        public void Push(T item)
        {
            //队列已满
            if (GetNextRearIndex() == _front)
            {
                //扩大数组
                T[] newQueue = new T[2 * _capacity];
                
                if (newQueue == null)
                    throw new ArgumentOutOfRangeException(“数据容量过大,超出系统内存大小。“);
                //队列索引尚未回绕
                if (_front == 0)
                {
                    //将旧队列数组数据转移到新队列数组中
                    Array.Copy(_queue newQueue _capacity);
                }
                else
                {
                    //如果队列回绕,刚需拷贝再次,
                    //第一次将队首至旧队列数组最大长度的数据拷贝到新队列数组中
                    Array.Copy(_queue _front newQueue _front _capacity - _rear - 1);
                    //第二次将旧队列数组起始位置至队尾的数据拷贝到新队列数组中
                    Array.Copy(_queue 0 newQueue _capacity _rear + 1);
                    //将队尾索引改为新队列数组的索引
                    _rear = _capacity + 1;
                }

                _queue = newQueue;
                _capacity *= 2;
            }

            //累加队尾索引,并添加当前项
            _rear = GetNextRearIndex();
            _queue[_rear] = item;
        }

        /// 
        /// 获取队首元素
        /// 

        /// 
        public T FrontItem()
        {
            if (IsEmpty())
                throw new ArgumentOutOfRangeException(“队列为空。“);
            
            return _queue[GetNextFrontIndex()];
        }

        /// 
        /// 获取队尾元素
        /// 

        /// 
        public T RearItem()
        {
            if (IsEmpty())
                throw new ArgumentOutOfRangeException(“队列为空。“);

            return _queue[_rear];
        }

        /// 


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       6656  2015-01-04 17:27  CircleQueue\CircleQueue\bin\Debug\CircleQueue.exe

     文件      17920  2015-01-04 17:27  CircleQueue\CircleQueue\bin\Debug\CircleQueue.pdb

     文件      11600  2015-01-04 17:25  CircleQueue\CircleQueue\bin\Debug\CircleQueue.vshost.exe

     文件        490  2010-03-17 22:39  CircleQueue\CircleQueue\bin\Debug\CircleQueue.vshost.exe.manifest

     文件       2487  2015-01-04 16:48  CircleQueue\CircleQueue\CircleQueue.csproj

     文件       4641  2015-01-04 17:56  CircleQueue\CircleQueue\MyCircleQueue.cs

     文件        252  2015-01-04 17:25  CircleQueue\CircleQueue\obj\x86\Debug\CircleQueue.csproj.FileListAbsolute.txt

     文件       6656  2015-01-04 17:27  CircleQueue\CircleQueue\obj\x86\Debug\CircleQueue.exe

     文件      17920  2015-01-04 17:27  CircleQueue\CircleQueue\obj\x86\Debug\CircleQueue.pdb

     文件       5847  2015-01-04 17:27  CircleQueue\CircleQueue\obj\x86\Debug\DesignTimeResolveAssemblyReferencesInput.cache

     文件       1617  2015-01-04 17:56  CircleQueue\CircleQueue\Program.cs

     文件       1372  2015-01-04 15:00  CircleQueue\CircleQueue\Properties\AssemblyInfo.cs

     文件        875  2015-01-04 15:00  CircleQueue\CircleQueue.sln

    ..A..H.     10752  2015-01-04 15:00  CircleQueue\CircleQueue.suo

     目录          0  2015-01-04 15:00  CircleQueue\CircleQueue\obj\x86\Debug\TempPE

     目录          0  2015-01-04 17:27  CircleQueue\CircleQueue\obj\x86\Debug

     目录          0  2015-01-04 16:48  CircleQueue\CircleQueue\bin\Debug

     目录          0  2015-01-04 15:00  CircleQueue\CircleQueue\obj\x86

     目录          0  2015-01-04 15:00  CircleQueue\CircleQueue\bin

     目录          0  2015-01-04 15:00  CircleQueue\CircleQueue\obj

     目录          0  2015-01-04 15:00  CircleQueue\CircleQueue\Properties

     目录          0  2015-01-04 15:04  CircleQueue\CircleQueue

     目录          0  2015-01-04 15:00  CircleQueue

----------- ---------  ---------- -----  ----

                89085                    23


评论

共有 条评论

相关资源