資源簡介
使用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
- 上一篇:asp.net 三層架構,經典源碼
- 下一篇:.net(C#)用戶登陸自定義控件
評論
共有 條評論