您好,登錄后才能下訂單哦!
本篇內容介紹了“C#隊列如何使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
隊列的特性很簡答,就是先進先出,一般利用數組來實現。
實現隊列自然要實現幾個函數:入隊,出隊,判斷隊滿,判斷隊空,獲得隊頭,隊尾。
實現隊列的關鍵在于隊頭指針和隊尾指針的設置:
假設初始狀態下,隊頭指針為0,隊尾指針為-1,那么兩個指針指的位置分別就是隊頭與隊尾。當隊尾的下一個是隊頭時隊空,當隊尾的下下個是隊頭時隊滿。
假設初始狀態下,隊頭隊尾指針都為0,那么隊尾指針指的是隊尾,而隊頭指針的下一個位置才是隊頭。當兩指針相等時隊空,當隊尾指針的下一個是隊頭時隊滿。
如果我們畫個圖就會發現,不管怎么設置指針,隊滿時數組一定還有一個空位。所以數組長度應該比隊列長度多1。
同時為了方便,我們會把隊列指針設置為循環的,即每次移動后取余數組的長度。
public class MyCircularQueue { private int front; private int rear; private int[] queue; public MyCircularQueue(int k) { queue=new int[k+1]; front=0; rear=-1; } public bool EnQueue(int value) { if((rear+2)%queue.Length==front) return false; rear++;rear=rear%queue.Length; queue[rear]=value; return true; } public bool DeQueue() { if((rear+1)%queue.Length==front) return false; front++;front=front%queue.Length; return true; } public int Front() { if(!IsEmpty()) return queue[front]; else return -1; } public int Rear() { if(!IsEmpty()) return queue[rear]; else return -1; } public bool IsEmpty() { if((rear+1)%queue.Length==front) return true; else return false; } public bool IsFull() { if((rear+2)%queue.Length==front) return true; else return false; } }
實際上C#也有一個隊列庫,如下圖所示
需要注意的是Dequeque和ToArray的返回類型都是object,可能需要進行強制轉換
class Program { static void Main(string[] args) { Queue q = new Queue(); q.Enqueue('A'); char ch = (char)q.Dequeue(); Console.WriteLine("The removed value: {0}", ch); } }
“C#隊列如何使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。