一. 队列简介
1. 什么是队列
队列(Queue)只允许在一端进行插入,在另一端进行删除的线性表。(队尾入队,队头出队),可见队列具有先进先出(First In First Out)或后进后出( Last In Last Out)的特性。
C#中提供Queue队列类,它不是线程安全的; 如需要使用线程安全的队列类,则使用:ConcurrentQueue
2. 名词
队头( Front):队列中允许数据删除的那一端。
队尾( Rear):队列中允许数据插入的那一端。
队上溢(Full):存储空间已满,仍希望入队操作,会产生上溢出,是一种空间不足的出错状态。
队下溢(Empty):队内空间无数据,仍希望出队操作,会产生下溢出,是一种数据不足的出错状态。
空队列(Empty Queue):队列中没有数据元素.
入队(Enqueue):将一个数据插入到队尾的操作。
出队(Dequeue):读取队头节点并删除该节点的操作
3. 常用Api
Enqueue()入队(放在队尾)
Dequeue()出队(移除队首元素,并返回被移除的元素)
Peek()取得队首的元素,不移除
Clear()清空元素
Count获取队列中元素的个数
测试代码:
{ Console.WriteLine("--------------C#提供的Queue---------------------"); Queue<int> s1 = new Queue<int>(); s1.Enqueue(1); s1.Enqueue(2); s1.Enqueue(3); s1.Enqueue(4); Console.WriteLine($"元素的个数为:{s1.Count}"); int p1 = s1.Dequeue(); //取出并删除 Console.WriteLine($"元素的个数为:{s1.Count},取出的数据为:{p1}"); int p2 = s1.Peek(); //取出不删除 Console.WriteLine($"元素的个数为:{s1.Count},取出的数据为:{p2}"); s1.Clear(); Console.WriteLine($"元素的个数为:{s1.Count}"); }