1 Queue2
3 usingSystem;4 usingSystem.Collections.Generic;5 usingSystem.Linq;6 usingSystem.Text;7 usingSystem.Threading;8
9 namespaceDataStructure10 {11 ///
12 ///队列接口13 ///
14 interface IQueue
15 {16 void EnQueue(T elem); //入队列操作
17 T DeQueue(); //出队列操作
18 T GetFront(); //取对头元素
19 int GetLength(); //求队列的长度
20 bool IsEmpty(); //判断队列是否为空
21 void Clear(); //清空队列
22 bool IsFull(); //判断队列是否为满
23 }24
25 ///
26 ///银行队列接口27 ///
28 interface IBankQueue : IQueue
29 {30 int GetCallnumber(); //获取服务号码
31 }32
33
34 ///
35 ///循环顺序队列36 ///
37 ///
38 class CSeqQueue : IQueue
39 {40 private int maxsize; //循环顺序队列的容量
41 private T[] data; //数组,用于存储循环顺序队列中的数据元素
42 private int front; //指示最近一个已经离开队列的元素所占有的位置 循环顺序队列的对头
43 private int rear; //指示最近一个进入队列的元素的位置 循环顺序队列的队尾
44
45 public T this[intindex]46 {47 get { returndata[index]; }48 set { data[index] =value; }49 }50
51 //容量属性
52 public intMaxsize53 {54 get { returnmaxsize; }55 set { maxsize =value; }56 }57
58 //对头指示器属性
59 public intFront60 {61 get { returnfront; }62 set { front =value; }63 }64
65 //队尾指示器属性
66 public intRear67 {68 get { returnrear; }69 set { rear =value; }70 }71
72 publicCSeqQueue()73 {74
75 }76
77 public CSeqQueue(intsize)78 {79 data = newT[size];80 maxsize =size;81 front = rear = -1;82 }83
84 //判断循环顺序队列是否为满
85 public boolIsFull()86 {87 if ((front == -1 &&